Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PHP返回递归函数的数组?_Php_Arrays_Recursion_Cakephp 2.0 - Fatal编程技术网

如何使用PHP返回递归函数的数组?

如何使用PHP返回递归函数的数组?,php,arrays,recursion,cakephp-2.0,Php,Arrays,Recursion,Cakephp 2.0,我有一个多维数组,如下所示: <pre>Array ( [0] => Array ( [id] => 52a83521-0914-4264-8fd9-07d9c601692a [role_id] => 2 [children] => Array ( [0] => Array

我有一个多维数组,如下所示:

<pre>Array
(
    [0] => Array
        (
            [id] => 52a83521-0914-4264-8fd9-07d9c601692a
            [role_id] => 2
            [children] => Array
                (
                    [0] => Array
                        (
                            [id] => 54c1f5e4-b52c-4e17-b1bf-1f4616091b4e
                            [role_id] => 8
                            [children] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 54c20aba-201c-40ce-b3df-22d516091b4e
                                            [role_id] => 9
                                        )

                                    [1] => Array
                                        (
                                            [id] => 54c20f4b-6e44-40ec-ae22-223a16091b4e
                                            [role_id] => 9
                                        )

                                )

                        )

                    [1] => Array
                        (
                            [id] => 54c1f8bb-ebac-466b-a83f-13a416091b4e
                            [role_id] => 8
                        )

                )

        )

)
</pre>
<pre>
Array(
[0]=>2,
[1]=>8,
[2]=>9,
[3]=>9,
[4]=>8
)
</pre>
function listRolesRecursive($myArray) {
    $res = array();
    $iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($myArray), RecursiveIteratorIterator::SELF_FIRST);
    foreach ($iterator as $k => $v) {
        if($k === "role_id") {
            $res[] = $v;
        }
    }
    return $res;
}

$res = listRolesRecursive($arr);
var_dump($res);
数组
(
[0]=>阵列
(
[id]=>52a83521-0914-4264-8fd9-07d9c601692a
[角色id]=>2
[子项]=>数组
(
[0]=>阵列
(
[id]=>54c1f5e4-b52c-4e17-b1bf-1f4616091b4e
[角色id]=>8
[子项]=>数组
(
[0]=>阵列
(
[id]=>54c20aba-201c-40ce-b3df-22d516091b4e
[角色id]=>9
)
[1] =>阵列
(
[id]=>54c20f4b-6e44-40ec-ae22-223a16091b4e
[角色id]=>9
)
)
)
[1] =>阵列
(
[id]=>54c1f8bb-ebac-466b-a83f-13a416091b4e
[角色id]=>8
)
)
)
)
我需要按顺序从该数组中获取填充所有角色的id。我尝试使用递归函数,如下所示:

<pre>Array
(
    [0] => Array
        (
            [id] => 52a83521-0914-4264-8fd9-07d9c601692a
            [role_id] => 2
            [children] => Array
                (
                    [0] => Array
                        (
                            [id] => 54c1f5e4-b52c-4e17-b1bf-1f4616091b4e
                            [role_id] => 8
                            [children] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 54c20aba-201c-40ce-b3df-22d516091b4e
                                            [role_id] => 9
                                        )

                                    [1] => Array
                                        (
                                            [id] => 54c20f4b-6e44-40ec-ae22-223a16091b4e
                                            [role_id] => 9
                                        )

                                )

                        )

                    [1] => Array
                        (
                            [id] => 54c1f8bb-ebac-466b-a83f-13a416091b4e
                            [role_id] => 8
                        )

                )

        )

)
</pre>
<pre>
Array(
[0]=>2,
[1]=>8,
[2]=>9,
[3]=>9,
[4]=>8
)
</pre>
function listRolesRecursive($myArray) {
    $res = array();
    $iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($myArray), RecursiveIteratorIterator::SELF_FIRST);
    foreach ($iterator as $k => $v) {
        if($k === "role_id") {
            $res[] = $v;
        }
    }
    return $res;
}

$res = listRolesRecursive($arr);
var_dump($res);

您可以使用以下命令浏览元素:


它应该可以做到这一点。

您可以使用:


它应该做到这一点。

wat是电流输出?wat是电流输出?