Я пытаюсь взять array
значений и построить форму php из этих значений.
Массив находится внизу, чтобы оставить вопрос понятным. Структура массива:
- Item - Item - Item with Child -Item -Item - Item with Child -Item -Item
Вот что я хочу вывести каждый item
но если у элемента есть дочерний элемент, просто введите имя родителя и создайте поля для детей.
Я создал это:
function renderTest2(array $data) { $html = '<ul>'; foreach ($data as $item) { $html .= '<li>'; foreach ($item as $key => $value) { if (is_array($value)) { $html .= renderTest2($value); } else { if (array_key_exists('children', $item)) { $html .= $item['name']; } else { $html .= $item['name'] . "<input type=\"text\" value=\"\"> <br/>"; } } } $html .= '</li>'; } $html .= '</ul>'; return $html; }
Который дал мне этот результат:
Но я не понимаю, почему это дублирует предметы. Что я делаю не так?
Вот тестовый массив, который я использовал:
$aFullArray = array(); $aFullArray[] = array("name" => "Adam", "address" => "123 main", "phone" => "000-000-0000"); $aFullArray[] = array("name" => "Beth", "address" => "123 main", "phone" => "000-000-0000"); $aChildren = array(); $aChildren [] = array("name" => "Mike", "address" => "123 main", "phone" => "000-000-0000"); $aChildren[] = array("name" => "Nancy", "address" => "123 main", "phone" => "000-000-0000"); $subChild = array(); $subChild [] = array("name" => "Peter", "address" => "123 main", "phone" => "000-000-0000"); $subChild [] = array("name" => "Paul", "address" => "123 main", "phone" => "000-000-0000"); $aChildren [] = array("name" => "Oscar", "address" => "123 main", "phone" => "000-000-0000", "children" => $subChild); $aFullArray[] = array("name" => "Charlie", "address" => "123 main", "phone" => "000-000-0000", "children" => $aChildren); $aFullArray[] = array("name" => "Danny", "address" => "123 main", "phone" => "000-000-0000");