use*_*671 8 php arrays json angularjs
我最近开始将Angular添加到我制作的旧应用程序中.部分应用程序将json编码的数组存储在mySql表的单个单元格中.我知道这是不赞成的,但我百分百肯定它以后不会再回来咬我了.在过去,我刚刚能够在数组上执行json_decode并在有序列表中输出值.由于我已经包含了Angular,因此数据被编码并在php文件的末尾进行回显.然后它被Angular代码拾取,我能够遍历这个深度嵌套的多维对象,直到它到达这个部分......
"sub_items":"[\"subOne\",\"subTwo\",\"subThree\"]"
Run Code Online (Sandbox Code Playgroud)
我能得到的最接近的是输出包含所有反斜杠,括号和引号的字符串,因为它是一个字符串.
我已经尝试在sub_items的每个实例上执行json_decode,但它不起作用.我认为那是因为整个事情再次被编码.
我怎么能循环遍历这个数组?
编辑
根据@Yaser Adel Mehraban的答案中的评论,我在以下方面取得了一些进展.
foreach($master as $index => $item) {
if($category == $item['category']) {
$sub = [];
$sub['sub_items'] = json_decode($item['sub_items']);
unset($item['sub_items']);
array_push($items, $item, $sub);
}
}
Run Code Online (Sandbox Code Playgroud)
这回来了
...created_at":"2016-11-01 14:19:07"},{"sub_items":["subOne","subTwo","subThree"...
Run Code Online (Sandbox Code Playgroud)
现在我认为我遇到麻烦的数组的格式是正确的,但它位于项目之外.我也尝试过array_merge,但它添加了一个新的密钥,这会强制我不必要的ng-repeat来降级.建议...
终于通过以下更改进行了排序...
foreach($master as $index => $item) {
foreach($item as $key => $value) {
if($key == 'sub_items') {
$sub = json_decode($value);
unset($item['sub_items']);
$item['sub_items'] = $sub;
}
}
if($category == $item['category']) {
array_push($items, $item);
}
}
Run Code Online (Sandbox Code Playgroud)
这回...
...created_at":"2016-11-01 14:19:07","sub_items":["subOne","subTwo","subThree"...
Run Code Online (Sandbox Code Playgroud)
不再被视为字符串,可以轻松使用 Angular 进行循环。谢谢!