0

基本的に、jsonの出力は次のとおりです。-outputはphpからのものです。

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

relはデフォルトと等しいので

{"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_encodeしてくださいjson_decode

于 2012-07-06T23:19:16.317 に答える