Könnte mir jemand erklären, warum dieser Code richtig funktioniert, ohne ursprüngliche Array-Struktur abstürzen?PHP paradoxes (komisches) Verhalten. Senden Array zu Funktion durch Referenz
function setArrayValueByPath($path, $value, &$array)
{
foreach ($path as $p) {
$array = &$array[$p];
}
$array = $value;
return true;
}
$array = [
'a' => 'v1',
'b' => 'v2',
];
setArrayValueByPath(['hello', 'world'], '!!!', $array);
echo '<pre>';
print_r($array);
echo '</pre>';
Wenn ich den Code ausführen, ich sehe:
Array
(
[a] => v1
[b] => v2
[hello] => Array
(
[world] => !!!
)
)
Aufgrund der Linie in der Funktion:
$array = $value;
es $ array Wert ersetzen soll, aber es geschieht nicht.
Meine Funktion basiert auf Code-Schnipsel sind hier gegeben: Using a string path to set nested array data Vielen Dank.
Trotz auf SO bittet, "Danke" in den Kommentaren zu vermeiden, danke ich Ihnen noch hier, mein Herr. Nun .. Sieht klar aus, aber ich bin richtig, es ist viel besser, anders benannte Variablen zu verwenden, um den Code verständlicher zu machen? –