PHP - 在Json中搜索字符串并删除元素

时间:2014-10-29 10:34:23

标签: php json

我想在json中搜索字符串并删除它,但我的代码不起作用,

这个json的例子:

{
   d: {
    results: [
              {
                name: "first",
                Url: "http://example.com/tes.pdf"
              },
              {

                name: "second",
                Url: "http://example.com/download/qwdahfvajvlaksjkjdfaklfaf"
             }
           ]
   }
}  

这是我的PHP代码:

$result = file_get_contents("cache.json");
$jsonObj = json_decode($result); 
foreach($jsonObj->d->results as $key => $value) { 
    if(strpos($value->Url, '.pdf') !== true) {
        unset($key->$value);
    }

}
echo json_encode($jsonObj);

在这种情况下,我想删除元素第二不包含网址" .pdf",

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

试试这个:

$result = '{"d":{"results":[{"name": "first","Url": "http://example.com/tes.pdf"},{"name": "second","Url": "http://example.com/download/qwdahfvajvlaksjkjdfaklfaf"}]}}';
$jsonArr= json_decode($result, true); //this is an array


foreach($jsonArr['d']['results'] as $key => $value) { 
    if(strpos($value['Url'], '.pdf') !== false) {
        continue; //found so not interested in it
    } else {
        unset($jsonArr['d']['results'][$key]);
    }

}
echo json_encode($jsonArr);

当我使用键和值时,我喜欢将它转换为数组(如果需要)。它更容易理解和操纵。

希望这有帮助! :d

答案 1 :(得分:-1)

您最好的选择是使用json_decode()将其转换为数组;从那里,你可以遍历你的数组。如果它保持相同的结构,那么类似下面的东西应该起作用:

<?php 
    $a = $array['d']['results'];
    foreach($a as $b => $c) {
        if(strpos($c['Url'], '.pdf') !== FALSE) {
            // Found
        } else {
            unset($a[$b]); // Unset in original array.
        }
    }