Se eseguo l'iterazione di un array due volte, una volta per riferimento e quindi per valore, PHP sovrascriverà l'ultimo valore nell'array se utilizzo lo stesso nome di variabile per ciascun ciclo. Questo è illustrato meglio con un esempio:Perché PHP sovrascrive i valori quando eseguo l'iterazione attraverso questa matrice due volte (in base al valore)
$array = range(1,5);
foreach($array as &$element)
{
$element *= 2;
}
print_r($array);
foreach($array as $element) { }
print_r($array);
uscita:
Array ([0] => 2 [1] => 4 [2] => 6 [3] => 8 [4] => 10)
Array ([0] => 2 [1] => 4 [2] => 6 [3] => 8 [4] => 8)
Nota che non sono t cercando una soluzione, sto cercando di capire perché questo sta accadendo. Si noti inoltre che non si verifica se i nomi delle variabili in ciascun ciclo non sono tutti denominati $element
, quindi suppongo che abbia a che fare con $element
ancora nell'ambito e un riferimento dopo la fine del primo ciclo.
Grazie! Questo ha perfettamente senso. –