Преобразовать этот массив в список HTML - PullRequest
0 голосов
/ 09 декабря 2010

У меня есть этот массив:

array
  0 => string '3,6' (length=3)
  3 => string '4,5' (length=3)
  4 => string '7,8' (length=3)
  8 => string '9' (length=1)

ИЛИ

array
  3 => 
    array
      4 => 
        array
          7 => null
          8 => 
            array
              9 => null
      5 => null
  6 => null

Каждый key - это идентификатор, а value - это идентификатор для потомков этого родителя.
Идентификатор 0 означает, что (3 и 6) не имеют родителя.
Теперь я хочу вывести список HTML вроде:

  • 3
    • 4
      • 7
      • 8
        • 9
    • 5
  • 6

Ответы [ 2 ]

4 голосов
/ 09 декабря 2010
$arr = array(
  0 => '3,6',
  3 => '4,5',
  4 => '7,8',
  8 => '9',
);
function writeList($items){
    global $arr;
    echo '<ul>';

    $items = explode(',', $items);
    foreach($items as $item){
        echo '<li>'.$item;
        if(isset($arr[$item]))
            writeList($arr[$item]);
        echo '</li>';
    }

    echo '</ul>';
}
writeList($arr[0]);

Проверьте это.

или

$arr = array(
    3 => array(
        4 => array(
            7 => null,
            8 => array(
                9 => null
            ),
        ),
        5 => null,
    ),
    6 => null,
);
function writeList($items){
    if($items === null)
        return;
    echo '<ul>';
    foreach($items as $item => $children){
        echo '<li>'.$item;
        writeList($children);
        echo '</li>';
    }
    echo '</ul>';
}
writeList($arr);
1 голос
/ 09 декабря 2010

Принимая этот формат:

$data = array(
    3 => array(
        4 => array(
            7 => null,
            8 => array(
                9 => null
            )
        ),
        5 => null
    ),
    6 => null
);

Сделайте это:

function writeList($tree)
{
    if($tree === null) return;
    echo "<ul>";
    foreach($tree as $node=>$children)
        echo "<li>", $node, writeList($children), '</li>';
    echo "</ul>";
}

writeList($data);

Проверьте это здесь: http://codepad.org/MNoW94YU

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...