遍历复杂的 json 数组

Iterating through complex json array

我通过 ajax post 收到以下多维数组:

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[=11=]"
                } [1] => array(1) {
                    ["id"] => string(6)
                    "1§1[=11=]"
                }
            }
        }
    } [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[=11=]"
                }
            }
        }
    }
}

}

有没有办法 return 只用 php 一个一个地字符串?数组中字符串的深度无关紧要,因为我只会解析和分解 id 字符串。

您可以将简单的 recorsice 函数实现为:

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"字符串,请执行:

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

参考:is_string, is_array, array-walk-recursive