foreach с одним массивом элементов - PullRequest
3 голосов
/ 07 июня 2011

Я делаю скрипт, который анализирует xml и выводит html форму. Вот как выглядит часть проанализированного xml (print_r).

[title] => Base
[id] => base
[type] => radio
[items] => Array
    (
        [item] => Array
            (
                [title] => item
                [id] => item_id
            )

    )

Это код, который отображает вывод html:

    foreach($category["items"]["item"] as $item){
        echo '<input type="radio" name="'.$category["id"].'" value="'.$item["id"].'">'.$item["title"].'</input><br>';
    }

Но вместо того, чтобы получать "item" и "item_id", я получаю "i" для обоих. Та же проблема, что и у Массив и foreach - переполнение стека . Он отлично работает, когда есть два или более массивов "item". Есть ли способ исправить это без необходимости делать особые исключения для массивов из 1 элемента, например if(count($array) == 1) ...

EDIT Вот как выглядит массив из нескольких элементов:

[title] => K
[id] => k
[type] => radio
[items] => Array
    (
        [item] => Array
            (
                [0] => Array
                    (

                        [title] => n
                        [id] => n_id

                    )

                [1] => Array
                    (
                        [title] => Y
                        [id] => y_id

                    )

            )

    )

Ответы [ 2 ]

8 голосов
/ 07 июня 2011

Вам нужно:
foreach($category["items"] as $item){
, потому что item это просто ключ первого элемента массива items.

3 голосов
/ 07 июня 2011

Удалить ["item"] из цикла foreach.

...
foreach($category["items"] as $item){
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...