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 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
  • ¥15 java 的protected权限 ,问题在注释里