dtotwai720621 2012-07-06 23:12
浏览 43
已采纳

json解码和编码 - 迭代通过多维数组并删除键值,如果等于某个值

Basically the json output is this -output is from php.

[{"attr":{"id":"node_2","rel":"default"},"data":"C:","state":"closed"},{"attr":{"id":"node_3","rel":"drive"},"data":"D:","state":"closed"}]

so because rel is equal to default

{"attr":{"id":"node_2","rel":"default"},"data":"C:","state":"closed"}

I need to remove this from the array.

I have thought of maybe using

foreach($arr as $key => &$item) {
    if ($value['rel'] == 'default'{
        unset($arr[$key]);

This however, wont work for some reason. I have no idea if my method is the best way, or whether there is a better way to achieve this. I also need to decode and encode it.

  • 写回答

2条回答 默认 最新

  • duanjingwei7239 2012-07-06 23:53
    关注

    You can use json_encode and json_decode to parse the json as Jesse Bunch said.

    After i decoded the json you posted, it returned as an object. To call on an object you have to do things a bit diffrent.

    $arr = json_decode('[{"attr":{"id":"node_2","rel":"default"},"data":"C:","state":"closed"},{"attr":{"id":"node_3","rel":"drive"},"data":"D:","state":"closed"}]');
    
    foreach($arr as $key => $row)
    {
        if ($row->attr->rel == 'default'){
            unset($arr[$key]);
        }
    }
    
    var_dump($arr);
    

    The $arr does no longer contain the default rel

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 有没有可以帮我搞一个微信建群链接,包括群名称和群资料群头像那种,不会让你白忙
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题