2015-05-11 140 views
1

我有一個帶有三個值的Json輸出。刪除包含特定值的Json行

{"contacts":[{"id":"1","name":"one"},{"id":"2","name":"two"},{"id":"3","name":"three"}]} 

而且我想與ID等於2,並將其輸出刪除行:

{"contacts":[{"id":"1","name":"one"},{"id":"3","name":"three"}]} 

我的代碼

$output = array(); 
while($row = mysqli_fetch_assoc($result)) 
    { 
    $output[] = $row; 
    } 



    $json = json_encode(array(
    "contacts" => $output 
)); 

    echo strip_tags($json); 

我怎麼能這樣做?謝謝

+0

我試圖使用未設置,但未設置僅刪除特定的值,我想刪除整行。我一直在努力尋找解決方案,但我沒有找到任何可以幫助我的東西。 –

+0

取消整行? – honerlawd

回答

1
從明顯

除了右邊有:

while($row = mysqli_fetch_assoc($result)) 
{ 
    if ($row['id'] != '2') { $output[] = $row; } 
} 

你在做什麼是返回數組,但它的過濾版本。因此,使用array_filter

$json = json_encode(array(
      'contacts' => array_filter(function($row) { 
       return $row['id'] != '2'; 
      }, $output) 
     )); 

既然你都可以從一個查詢的結果,你還可以添加WHERE id != 2來查詢,以便它不回來開始。

0

這裏是一種方式,它取決於你想改變它的位置。在你的控制器,例如,像這樣

$output = array(); 
while($row = mysqli_fetch_assoc($result)) 
{ 
$output[] = $row; 
} 

$newValue = 2; 

foreach($output as $key => $v){ 
    if($key === 'id'){ 
     $output[$key] = $newValue; 
    } 

} 

$json = json_encode(array(
"contacts" => $output 
));