Php json解码和编码-迭代多维数组,如果等于某个值,则删除键值
基本上json输出是this-输出来自phpPhp json解码和编码-迭代多维数组,如果等于某个值,则删除键值,php,jquery,json,Php,Jquery,Json,基本上json输出是this-输出来自php [{"attr":{"id":"node_2","rel":"default"},"data":"C:","state":"closed"},{"attr":{"id":"node_3","rel":"drive"},"data":"D:","state":"closed"}] 因为rel等于default {"attr":{"id":"node_2","rel":"default"},"data":"C:","state":"closed"}
[{"attr":{"id":"node_2","rel":"default"},"data":"C:","state":"closed"},{"attr":{"id":"node_3","rel":"drive"},"data":"D:","state":"closed"}]
因为rel等于default
{"attr":{"id":"node_2","rel":"default"},"data":"C:","state":"closed"}
我需要将其从阵列中删除
我已经考虑过使用
foreach($arr as $key => &$item) {
if ($value['rel'] == 'default'{
unset($arr[$key]);
然而,由于某些原因,这是行不通的。我不知道我的方法是否是最好的方法,或者是否有更好的方法来实现这一点。
我还需要对它进行解码和编码。在大多数语言中,在循环数组时对其进行变异是不可取的。在PHP中,没有任何东西可以说明在循环数组时不能对其进行变异。你所做的是绝对好的,而且可能是最有效的方式
至于编码和解码,请参见
json\u-encode
和json\u-decode
您可以使用json\u-encode和json\u-decode解析json,正如Jesse Bunch所说
在我解码您发布的json后,它作为一个对象返回。要调用一个对象,你必须做一些不同的事情
$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);
$arr不再包含默认的rel很抱歉,忘了提到这不起作用。我缺少一些简单的东西。如果将
TRUE
作为第二个参数传递给json\u decode
,它将以数组而不是StdClass
类型的对象返回。非常感谢Pilatus。我相信这已经奏效了。现在有没有一种简单的方法来重新编码呢。非常非常感谢。