Tengo una pregunta sobre PHP y el uso de punteros y variables.Puntero PHP y conflicto variable
El siguiente código produce algo que no habría esperado:
<?php
$numbers = array('zero', 'one', 'two', 'three');
foreach($numbers as &$number)
{
$number = strtoupper($number);
}
print_r($numbers);
$texts = array();
foreach($numbers as $number)
{
$texts[] = $number;
}
print_r($texts);
?>
La salida es la siguiente
Array
(
[0] => ZERO
[1] => ONE
[2] => TWO
[3] => THREE
)
Array
(
[0] => ZERO
[1] => ONE
[2] => TWO
[3] => TWO
)
Aviso el 'dos' que aparece dos veces en la segunda matriz.
Parece que hay un conflicto entre los dos bucles foreach, cada uno declarando una variable de $ number (una por referencia y la segunda por valor).
¿Pero por qué? ¿Y por qué afecta solo el último elemento en el segundo foreach?
posible duplicado de [Comportamiento extraño de foreach] (http://stackoverflow.com/questions/4969243/strange-behavior-of-foreach) –
Por favor, mira aquí: http://stackoverflow.com/questions/4969243/ strange-behavior-of-foreach/4969518 # 4969518 para una explicación más detallada de este comportamiento. –
+1 por uno agradable :) –