Итерация по сложному ассоциативному массиву в PHP

Я знаю, что это уже ответили, но я хотел бы упомянуть, что я опубликовал расширение для решения этой точной проблемы и добавил несколько других функций, таких как возможность прокручивать несколько курсоров, удалять все варианты с несколькими курсорами, кроме самого последний и т. д.

Проверьте здесь https://marketplace.visualstudio.com/items?itemName=danseethaler.tab-through-selections

19
задан Jason Plank 1 November 2011 в 17:47
поделиться

6 ответов

Вложенное множество два foreach циклы :

foreach ($array as $i => $values) {
    print "$i {\n";
    foreach ($values as $key => $value) {
        print "    $key => $value\n";
    }
    print "}\n";
}
40
ответ дан 30 November 2019 в 01:46
поделиться

Похож на хорошее место для рекурсивной функции, особенно если у Вас будет больше чем два уровня глубины.

function doSomething(&$complex_array)
{
    foreach ($complex_array as $n => $v)
    {
        if (is_array($v))
            doSomething($v);
        else
            do whatever you want to do with a single node
    }
}
13
ответ дан 30 November 2019 в 01:46
поделиться

Необходимо смочь использовать вложенный foreach statment

от php руководство

/* foreach example 4: multi-dimensional arrays */
$a = array();
$a[0][0] = "a";
$a[0][1] = "b";
$a[1][0] = "y";
$a[1][1] = "z";

foreach ($a as $v1) {
    foreach ($v1 as $v2) {
        echo "$v2\n";
    }
}
5
ответ дан 30 November 2019 в 01:46
поделиться

Я действительно не уверен, что Вы имеете в виду здесь - конечно, пара циклов foreach делает то, в чем Вы нуждаетесь?

foreach($array as $id => $assoc)
{
    foreach($assoc as $part => $data)
    {
        // code
    }
}

Или Вам нужно что-то рекурсивное? Я смог бы помочь больше с данными в качестве примера и контекстом в том, как Вы хотите возвращенные данные.

0
ответ дан 30 November 2019 в 01:46
поделиться

Можно ли просто циклично выполниться по всем объектам "части [n]" и использовать ли isset, чтобы видеть, существуют ли они на самом деле или нет?

0
ответ дан 30 November 2019 в 01:46
поделиться

Я знаю, что это вопрос о некромантии, но итерации по поводу многомерных массивов легко с SPL-итераторами

$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($array));

foreach($iterator as $key=>$value) {
    echo $key.' -- '.$value.'<br />';
}

см.

40
ответ дан 30 November 2019 в 01:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: