2017-07-13 75 views
0

我可以從CURL網站獲取數據,我可以將這些數據轉換爲json。從curl-json中刪除一個元素

我想從json中刪除一個元素。

輸出:

{ 
     "test":{ 
      "numbers": 
       [ 
         "1", 
         "27", 
         "32", 
         "1", 
         "94", 
         "1", 
         "8" 
       ] 
     } 
} 

我想從我的JSON刪除 「1」。我怎樣才能做到這一點?感謝您的幫助。

我的代碼:

<?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

嘗試'的foreach($ jsonData [ 「測試」] [ 「數字」]作爲$鍵=>&$ ELEM)如果($ ELEM === 「1」)未設置($ jsonData [ 「測試」 ] [「數字」] [$ key]);' – user2464424

+0

非常感謝@ user2464424你的代碼很好用。 – Johny

回答

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")); 
+0

你好@RobbieToyota你的第二個代碼完美的作品。非常感謝你。 – Johny

+0

您好@RobbieToyota,我想你的代碼和我的結果是 { 「測試」:{ 「數字」: [ 1: 「5」, 2: 「27」, 3: 「32」, 4: 「41」, 5: 「94」, 6: 「27」, 7: 「8」 ] } } 我怎樣才能去除1,2,3,4,5,6來自json的7個數字? – Johny

+0

@Johny你是否想刪除1-5的__value__(只刪除'[1:「5」]記錄),或者是1-5的__key__(前5個會被刪除,只剩下[6 : 「27」,7: 「8」]')? array_diff將用於「搜索值」的情況。如果你想基於鍵來移除,你可以使用'array_diff_key()' - 它以同樣的方式工作,除了它比較數組鍵值,而不是數組值。 – RToyo