Я пытаюсь пройти через один массив, добавляя новый уровень к другому массиву каждый раз. Позвольте мне проиллюстрировать – переменные значения $ arr различаются каждый раз
$arr = array("1","5","6");
перекручивание
$index[$arr[0]];
перекручивание
$index["1"][$arr[1]] // "1" since this key was filled in by the previous loop, continuing with a new key
перекручивание
$index["1"]["5"][$arr[2]] // same as previous loop
– вывернули все элементы $ arr, результат – $ index ["1"] ["5"] ["6"] –
Проблема в том, что я не буду знать, сколько значений содержит массив $arr
. Тогда я не знаю, как продолжить, например, $index["1"]
когда первое значение $arr
было зациклировано до следующего уровня массива (другими словами: добавьте еще один ключ).
Кто угодно?
Вы можете использовать ссылки здесь:
$a = array("1","5","6"); $b = array(); $c =& $b; foreach ($a as $k) { $c[$k] = array(); $c =& $c[$k]; }
выходы
Array ( [1] => Array ( [5] => Array ( [6] => Array ( ) ) ) )
Чтобы переписать последний элемент другим значением, вы можете просто добавить строку:
$c = 'blubber';
после цикла, потому что $ c является ссылкой на самый глубокий уровень массива, когда цикл закончен.
function add_inner_array(&$array, $index) { if(isset($array[$index])) return true; else { $array[$index] = array(); return true; } } $a = array(1,5,6); $index = array(); $pass =& $index; foreach($a as $k) { add_inner_array($pass, $k); $pass =& $pass[$k]; }
Вы в основном хотите увидеть, насколько глубок многомерный массив, не так ли? Если это так, это должно быть полезно: есть ли способ узнать, как «глубокий» массив PHP?
Возможно, я ошибаюсь, но я думаю, что вы задаете то же самое, что и этот вопрос: многомерные массивы, вложенные в неограниченную глубину