Преобразование массива PHP в входы HTML-формы – это дублирование элементов

Я пытаюсь взять 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");