我有我的json,我把它转换成了一个php数组,这里是print_r:
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-187
id-209
children-Array
id-188
children-Array
id-189
children-Array
id-202
children-Array
id-203
children-Array
id-194
答案 0 :(得分:0)
您尝试遍历每个,无论ID是id
还是children
。由于密钥为id
时的值是数字而不是数组,因此在尝试作为foreach运行时将失败。相反,只有在你知道它是一个数组时才会循环(strcmp开始发挥作用):
$arrayList = json_decode(stripslashes($_POST['nestable-output']), true);
foreach ($arrayList as $array1){
foreach ($array1 as $pageID => $pageOrder){
echo $pageID . "-" . $pageOrder . "<br/>";
if(strcmp("children", $pageID) == 0)) {
foreach ($pageOrder as $pageID2 => $pageOrder2){
echo $pageID2 . "-" . $pageOrder2 . "<br/>";
}
}
}
}
答案 1 :(得分:0)
您收到“无效参数”错误,因为您尝试将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/>";
}
}
}
}
答案 2 :(得分:0)
您未从$pageID => $pageOrder
获得foreach($array1...)
。你得到一个$key => $value
。你的$ key可能等于字符串'id',在这种情况下$ value将是数组中的id号。你的$ key也可以等于字符串'children',在这种情况下$ value将是你的子id数组。
答案 3 :(得分:0)
据我所知,你正在寻找一个多维数组的字符串。尝试这样的事情:
$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级,这也应该有效。