我想在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",
任何人都可以帮助我吗?
答案 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.
}
}