Ho una domanda su PHP e sull'uso di puntatori e variabili.Puntatore PHP e conflitto variabile
Il seguente codice produce qualcosa che non mi sarei aspettato:
<?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);
?>
L'uscita è la seguente
Array
(
[0] => ZERO
[1] => ONE
[2] => TWO
[3] => THREE
)
Array
(
[0] => ZERO
[1] => ONE
[2] => TWO
[3] => TWO
)
Avviso della 'due' che appare due volte nel secondo array.
Sembra che ci sia un conflitto tra i due cicli foreach, ognuno dei quali dichiara una variabile numero $ (una volta per riferimento e la seconda per valore).
Ma perché? E perché influenza solo l'ultimo elemento nel secondo foreach?
possibile duplicato del [Strano comportamento di foreach] (http://stackoverflow.com/questions/4969243/strange-behavior-of-foreach) –
Si prega di consultare qui: http://stackoverflow.com/questions/4969243/ strano-comportamento-di-foreach/4969518 # 4969518 per una spiegazione approfondita di questo comportamento. –
+1 per una bella :) –