Многомерный Массив в html Многомерный флажок

0

У меня такой массив:

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [0] => Array
                        (
                            [0] => a
                            [1] => d
                            [2] => Array(...)
                        )

                )

        )

    [1] => Array
        (
            [0] => Array
                (
                    [0] => Array
                        (
                            [0] => a
                            [1] => e
                            [2] => Array(...)
                        )

                )

        )

)

Я хотел бы создать из этого массива набор флажков, вложенных в инструкцию HTML <li>. Я создал функцию для создания вложенных <li>

function nested_li(array $array){
    $output = '<ul>';
    foreach($array as $key => $value){
        $output .= "<li><strong>$key: </strong>\n";
        if(is_array($value)){
            $output .= nested_li($value)."\n";
        }else{
            $output .= $value."\n";
        }
        $output .= '</li>'."\n";
    }
    $output .= '</ul>'."\n";
    return $output;
}

Теперь проблема состоит в том, чтобы создать в этом вложенный список флажков, например:

<input type="checkbox" name="check[0][0][0][0]" value="a"/>
<input type="checkbox" name="check[0][0][0][1]" value="d"/>
<input type="checkbox" name="check[1][0][0][0]" value="a"/>
<input type="checkbox" name="check[1][0][0][1]" value="e"/>

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

Теги:
arrays

1 ответ

2

Надеюсь, это поможет вам :)

использовать рекурсивный активатор

$arr=array
(
    0 => array
        (
            0 => array
                (
                    0 => array
                        (
                            0 => 'a',
                            1 => 'd',
                            2 => 's' //or Array(...)
                        ),

                ),

        ),

    1 => array
        (
            0 => array
                (
                    0 => array
                        (
                            0 => 'a',
                            1 => 'e',
                            2 => 'l'
                        ),

                ),

        ),

);

$flat = new RecursiveIteratorIterator(new RecursiveArrayIterator($arr));
foreach($flat as $item) {
  $a[]= $item;
}
foreach($a as $i)
{
    echo '<input type="checkbox" name="'.$i.'" value="a"/>'.$i;
}

Ещё вопросы

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