0

基本上 json 输出是这个 - 输出来自 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"}

我需要从数组中删除它。

我想过也许使用

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

但是,由于某种原因,这不起作用。我不知道我的方法是否是最好的方法,或者是否有更好的方法来实现这一点。我还需要对其进行解码和编码。

4

2 回答 2

2

正如 Jesse Bunch 所说,您可以使用 json_encode 和 json_decode 来解析 json。

在我解码您发布的 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

于 2012-07-06T23:53:18.027 回答
0

在大多数语言中,在循环数组时对其进行变异是不受欢迎的。在 PHP 中,没有什么说在循环时不能改变数组。您正在做的事情绝对没问题,并且可能是最有效的方法。

至于编码和解码,请参见json_encodejson_decode

于 2012-07-06T23:19:16.317 回答