从curl-json中删除一个元素

时间:2017-07-13 14:09:12

标签: php json curl

我可以使用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);
?>

1 个答案:

答案 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"));