Jeśli mam tablicę, która odpowiada kolejnym kluczom rekurencyjnym w innej tablicy, jaki jest najlepszy sposób przypisania wartości do tej "ścieżki" (jeśli chcesz to tak nazwać)?Przypisywanie do arbitralnie głębokiego indeksu tablicy?
Na przykład:
$some_array = array();
$path = array('a','b','c');
set_value($some_array,$path,'some value');
Teraz, $some_array
powinna wynosić
array(
'a' => array(
'b' => array(
'c' => 'some value'
)))
w tej chwili używam następujące:
function set_value(&$dest,$path,$value) {
$addr = "\$dest['" . implode("']['", $path) . "']";
eval("$addr = \$value;");
}
Oczywiście, to jest bardzo naiwny podejście i stanowi ryzyko bezpieczeństwa, więc jak by to zrobić?
Co się stanie, jeśli ścieżka jest nieważna? – Matthew
@konforce - Powinno to być przypisane tak, jak w moim przykładzie powyżej, gdy '$ some_example' zaczyna być pusta. –
Zaktualizowałem moją odpowiedź, aby to odzwierciedlić. Zauważ, że teraz również nadpisuje wartości łańcuchów tablicami, ale byłoby to łatwe do zmiany, gdyby to zachowanie nie było pożądane. – Matthew