Итерация по сложному массиву JSON - PullRequest
0 голосов
/ 26 июня 2019

Я получаю следующий многомерный массив через сообщение ajax:

array(1) {
["result"] => array(3) {
    [0] => array(2) {
        [0] => string(1)
        "0" [1] => array(2) {
            ["id"] => string(5)
            "1§10" ["children"] => array(2) {
                [0] => array(1) {
                    ["id"] => string(6)
                    "1§3$0"
                } [1] => array(1) {
                    ["id"] => string(6)
                    "1§1$0"
                }
            }
        }
    } [1] => array(2) {
        [0] => string(1)
        "1" [1] => array(1) {
            ["id"] => string(5)
            "3§20"
        }
    } [2] => array(2) {
        [0] => string(1)
        "2" [1] => array(2) {
            ["id"] => string(5)
            "2§30" ["children"] => array(1) {
                [0] => array(1) {
                    ["id"] => string(6)
                    "2§2$0"
                }
            }
        }
    }
}

}

Есть ли способ вернуть только строки одну за другой с помощью php?Глубина строки в массиве не имеет значения, потому что я буду только анализировать и взрывать строки идентификатора.

1 Ответ

0 голосов
/ 26 июня 2019

Вы можете реализовать простую функцию записи как:

function printString($arg) {
    if (is_string($arg))
        echo $arg . PHP_EOL;
    else (is_array($arg)) {
        foreach($arg as $e)
            printString($e);
    }
}

Или используйте array_walk_recursive как:

function printStr($item, $key) {
    echo $item . PHP_EOL;
}

array_walk_recursive($arr, 'printStr');

Если вам нужна только строка "id" do:

function printId($item, $key) { if ($key == "id") echo $item . PHP_EOL; }
array_walk_recursive($arr, 'printId');

Ссылка: is_string , is_array , array-walk-recursive

...