json转换为php数组,然后正确显示为列表

json转换为php数组,然后正确显示为列表,php,arrays,json,Php,Arrays,Json,我得到了我的json,我把它转换成了一个php数组,下面是打印: Array ( [0] => Array ( [id] => 187 ) [1] => Array ( [id] => 209 [children] => Array ( [0] => A

我得到了我的json,我把它转换成了一个php数组,下面是打印:

Array
(
    [0] => Array
        (
            [id] => 187
        )

    [1] => Array
        (
            [id] => 209
            [children] => Array
                (
                    [0] => Array
                        (
                            [id] => 210
                        )

                    [1] => Array
                        (
                            [id] => 211
                        )

                )

        )

    [2] => Array
        (
            [id] => 188
            [children] => Array
                (
                    [0] => Array
                        (
                            [id] => 196
                        )

                    [1] => Array
                        (
                            [id] => 197
                        )

                    [2] => Array
                        (
                            [id] => 198
                        )

                )

        )

    [3] => Array
        (
            [id] => 189
            [children] => Array
                (
                    [0] => Array
                        (
                            [id] => 193
                        )

                )

        )

    [4] => Array
        (
            [id] => 202
            [children] => Array
                (
                    [0] => Array
                        (
                            [id] => 190
                        )

                    [1] => Array
                        (
                            [id] => 191
                        )

                    [2] => Array
                        (
                            [id] => 206
                        )

                    [3] => Array
                        (
                            [id] => 192
                        )

                )

        )

    [5] => Array
        (
            [id] => 203
            [children] => Array
                (
                    [0] => Array
                        (
                            [id] => 204
                        )

                    [1] => Array
                        (
                            [id] => 205
                        )

                    [2] => Array
                        (
                            [id] => 207
                        )

                    [3] => Array
                        (
                            [id] => 208
                        )

                )

        )

    [6] => Array
        (
            [id] => 194
        )

)
现在,我想将该数组转换为一个列表,最终可以更新数据库。但我不知道如何处理子数组:

到目前为止,我已经:

$arrayList = json_decode(stripslashes($_POST['nestable-output']), true);

foreach ($arrayList as $array1){
    foreach ($array1 as $pageID => $pageOrder){
        echo $pageID . "-" . $pageOrder . "<br/>";
        //foreach ($pageOrder as $pageID2 => $pageOrder2){
        //  echo $pageID2 . "-" . $pageOrder2 . "<br/>";
        //}
    }
}

您正在尝试遍历每一个,无论id是
id
还是
子项
。由于键为
id
时的值是数字,而不是数组,因此在尝试作为foreach运行时将失败。相反,只有当您知道它是一个数组时才循环(strcmp开始发挥作用):

$arrayList=json\u decode(stripslashes($\u POST['nestable-output']),true);
foreach($arrayList为$array1){
foreach($pageID=>$pageOrder的数组1){
echo$pageID。“-”$pageOrder。“
”; if(strcmp(“子项,$pageID)==0)){ foreach($pageOrder作为$pageID2=>$pageOrder2){ echo$pageID2。“-”$pageOrder2。“
”; } } } }
由于试图将ID值(一个整数)传递给第二个
foreach
构造,因此出现“无效参数”错误

尝试将代码修改为:

$arrayList = json_decode(stripslashes($_POST['nestable-output']), true);

foreach ($arrayList as $array1){
    foreach ($array1 as $pageID => $pageOrder){
        echo $pageID . "-" . $pageOrder . "<br/>";
        if($pageID == 'children') {
            foreach ($pageOrder as $pageID2 => $pageOrder2){
              echo $pageID2 . "-" . $pageOrder2 . "<br/>";
            }
        }
    }
}
$arrayList=json\u decode(stripslashes($\u POST['nestable-output']),true);
foreach($arrayList为$array1){
foreach($pageID=>$pageOrder的数组1){
echo$pageID。“-”$pageOrder。“
”; 如果($pageID=='children'){ foreach($pageOrder作为$pageID2=>$pageOrder2){ echo$pageID2。“-”$pageOrder2。“
”; } } } }
您无法从
foreach($array1…
获取
$pageID=>$pageOrder
。您将获得一个
$key=>$value
。$key可以等于字符串“id”,在这种情况下,$value将是数组中的id号。您的$key也可以等于字符串“children”,在这种情况下,$value将是您的子ID数组。

据我所知,您希望从多维数组中获取字符串。试着这样做:

$arrayList = json_decode(stripslashes($_POST['nestable-output']), true);

$list = trim(array_walk($arrayList, 'get_ids'), ',');

function get_ids($array_list) {
    $list = '';

    foreach($array_list as $key => $value) {
        if('children' == $key) $list .= get_ids($value)
        else {
            foreach($value as $index => $id) $list .= $id . ', ';
        }
    }

    return $list;
}

注意,即使你有超过2个级别的数组,它也应该工作。

谢谢,我不得不在中间添加另一个前段来显示数组的最终级别,但是它现在正在工作。有时你看不见树木,看不见森林@jimbeeer这是一个简单的错误,我打赌你现在不会再犯了
$arrayList = json_decode(stripslashes($_POST['nestable-output']), true);

foreach ($arrayList as $array1){
    foreach ($array1 as $pageID => $pageOrder){
        echo $pageID . "-" . $pageOrder . "<br/>";
        if($pageID == 'children') {
            foreach ($pageOrder as $pageID2 => $pageOrder2){
              echo $pageID2 . "-" . $pageOrder2 . "<br/>";
            }
        }
    }
}
$arrayList = json_decode(stripslashes($_POST['nestable-output']), true);

$list = trim(array_walk($arrayList, 'get_ids'), ',');

function get_ids($array_list) {
    $list = '';

    foreach($array_list as $key => $value) {
        if('children' == $key) $list .= get_ids($value)
        else {
            foreach($value as $index => $id) $list .= $id . ', ';
        }
    }

    return $list;
}