Я хочу создать трехуровневый массив в php, с примерами данных для разработки целей, у меня есть следующее:
$data = array( array(1 => array("A ROW GREENS", array( "A1" => array("http://img.ruphp.com/php/kitchen_adventurer_cheesecake_brownie.jpg"), "A2" => array("http://img.ruphp.com/php/kitchen_adventurer_cheesecake_brownie.jpg"), "A3" => array("http://img.ruphp.com/php/kitchen_adventurer_cheesecake_brownie.jpg") ))), array(2 => array("A ROW BLUE",array( "A1" => array("http://img.ruphp.com/php/kitchen_adventurer_cheesecake_brownie.jpg"), "A2" => array("http://img.ruphp.com/php/kitchen_adventurer_cheesecake_brownie.jpg"), "A3" => array("http://img.ruphp.com/php/kitchen_adventurer_cheesecake_brownie.jpg") ))), );
Как вы можете видеть, это структура:
Element:[ID -> Title][IDSubitem1->URL, IDSubitem2->URL2...] Element:[ID -> Title][IDSubitem1->URL, IDSubitem2->URL2...] Element:[ID -> Title][IDSubitem1->URL, IDSubitem2->URL2...]
Мне нужно напечатать <ul>
с заголовками (используя идентификатор для их идентификатора) и распечатать теги <ul>
для отображения или скрытия подпунктов или выбранного родителя.
<ul id="parent"> <li id="1">A ROW GREENS</li> <li id="2">A ROW BLUE</li> </ul> <ul id="child1"> <li id="child1-A1">http://img.ruphp.com/php/kitchen_adventurer_cheesecake_brownie.jpg</li> <li id="child1-A2">http://img.ruphp.com/php/kitchen_adventurer_cheesecake_brownie.jpg</li> <li id="child1-A3">http://img.ruphp.com/php/kitchen_adventurer_cheesecake_brownie.jpg</li> </ul> <ul id="child2"> <li id="child2-A1">http://img.ruphp.com/php/kitchen_adventurer_cheesecake_brownie.jpg</li> <li id="child2-A2">http://img.ruphp.com/php/kitchen_adventurer_cheesecake_brownie.jpg</li> <li id="child2-A3">http://img.ruphp.com/php/kitchen_adventurer_cheesecake_brownie.jpg</li> </ul>
Вы можете достичь ожидаемого результата, как показано ниже:
<?php $data = array( array(1 => array("A ROW GREENS", array( "A1" => array("http://img.ruphp.com/php/kitchen_adventurer_cheesecake_brownie.jpg"), "A2" => array("http://img.ruphp.com/php/kitchen_adventurer_cheesecake_brownie.jpg"), "A3" => array("http://img.ruphp.com/php/kitchen_adventurer_cheesecake_brownie.jpg") ))), array(2 => array("A ROW BLUE",array( "A1" => array("http://img.ruphp.com/php/kitchen_adventurer_cheesecake_brownie.jpg"), "A2" => array("http://img.ruphp.com/php/kitchen_adventurer_cheesecake_brownie.jpg"), "A3" => array("http://img.ruphp.com/php/kitchen_adventurer_cheesecake_brownie.jpg") )))); $parent_data = ''; $child_data = ''; foreach($data as $dat){ foreach($dat as $key=>$da){ $parent_data .="<li id ='".$key."'>".$da[0]."</li>"; $child_data .="<ul id='child".$key."'>"; foreach ($da[1] as $k=>$v){ $child_data .="<li id='child".$key."-".$k."'>".$v[0]."</li>"; } $child_data .="</ul>"; } } ?> <ul id="parent"><?php echo $parent_data;?></ul><?php echo $child_data;?>
Выход: – https://eval.in/656522
Примечание: – Код будет работать только для данной структуры массива (элемент может быть больше, без проблем), но если структура массива изменена, код не будет работать.
Вы пытаетесь использовать 3 foreach ()
foreach($data as $level1) { foreach(level1 as $level2) { foreach(level2 as $level3) {