Переход через неограниченные вложенные массивы

0

Я пытаюсь выработать способ получить значение "title" из массива, который вложен в любую неограниченную глубину в других массивах.

Я понимаю, что для этого потребуется отдельная функция, но на данный момент мне не удается выяснить, как отображать значения по цепочке, поэтому я могу сформулировать это в другой функции.

Функция будет рассказана, сколько уровней должно опускаться, всегда глядя в "дочерний" элемент для следующего массива.

$new_map=array();
$new_map[0]["title"]="Level zero";
$new_map[0]["child"]="";


$new_map1=array();
$new_map1[0]["title"]="Level one";
$new_map1[0]["child"]="empty1";

$new_map2=array();
$new_map2[0]["title"]="Level two";
$new_map2[0]["child"]="empty2";

$new_map3=array();
$new_map3[0]["title"]="Level three";
$new_map3[0]["child"]="empty3";


$new_map[0]["child"]=$new_map1;

$new_map1[0]["child"]=$new_map2;

$new_map2[0]["child"]=$new_map3;



foreach($new_map as $key => $val){

foreach($new_map[$key]["child"] as $key2 => $val2){

foreach($new_map[$key]["child"][$key2]["child"] as $key3 => $val3){
echo $new_map[$key]["child"][$key2]["child"][$key3]["title"]."<br/>";
}

}

}
Теги:

1 ответ

0

Вы должны использовать Depth First Search для получения значения "title" из массива, который вложен на любую неограниченную глубину в других массивах. Вместо того, чтобы каждый раз принимать новый массив, возьмите 3D-массив

$ new_map [i] [0] ["child"], где я указывает i-й массив.

Затем, используя dfs для $ new_map [i] [0] ["child"], проверьте дочерний массив $ new_map [i + 1] [0] ["child"], если он содержит заданное значение, которое вы запросили.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню