我可以使用CURL从网站获取数据,我可以将此数据转换为json。
我想从json中删除一个元素。
输出:
{
"test":{
"numbers":
[
"1",
"27",
"32",
"1",
"94",
"1",
"8"
]
}
}
我想删除" 1"来自我的json。我怎样才能做到这一点?谢谢你的帮助。
我的代码:
<?php
function Curlconnect($start,$end,$website) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $website);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$website = curl_exec($ch);
preg_match_all('@'.$start.'(.*?)'.$end.'@si',$website,$ver);
return $ver[1];
curl_close($ch);
}
function nt($start,$bit,$data,$a) {
preg_match_all('@'.$start.'(.*?)'.$bit.'@si',$data,$ver);
return $ver[1];
}
$url = 'http://www.url.com';
$getdata = Curlconnect('<h4','h4>',$url);
$jsonData = ["data"];
$jsonData["numbers"] = [];
for ($a=0; $a<count($getdata); $a++) {
$printdata = nt('>','</',$getdata[$a],$a);
$jsonData["test"]["numbers"][] = $printdata[0];
}
echo json_encode($jsonData);
?>
答案 0 :(得分:1)
您可以使用array_search()
在数组(您的$jsonData["test"]["numbers"]
数组)中查找值,并使用unset()
从数组中删除值。
因为有多个“1”值,而array_search()
只返回找到的第一个键,所以您需要使用while循环来确保找到要删除的所有值。
function remove_value_from_array ($val, $array)
{
while ( ($key = array_search($array, $val)) !== false)
{
unset($array[$key]);
}
return $array;
}
$jsonData["test"]["numbers"] = remove_value_from_array($jsonData["test"]["numbers"], "1");
编辑:我记得一种更简单的方式 - 以及一种允许您搜索多个值的方法。您只需使用array_diff()
搜索值,然后将其删除即可。
// Remove a single value of "1"
$jsonData["test"]["numbers"] = array_diff($jsonData["test"]["numbers"], array(1));
// Remove multiple values, of "1", "2", "5", and the word "test"
$jsonData["test"]["numbers"] = array_diff($jsonData["test"]["numbers"], array(1, 2, 5, "test"));