2015-04-08 5 views
0

Я хочу удалить запись из JSON, изменив status на DELETE перед отправкой.удалить запись из json с помощью php

JSON:

{ 
Shawn Taylor: { 
    name: "Shawn Taylor", 
    title: "Director", 
    photo_url: "Creative-ShawnTaylor.jpg", 
    status: "Current" 
}, 

Shawn Taylor 2: { 
    name: "Shawn Taylor 2", 
    title: "Photographer", 
    photo_url: "Creative-ShawnTaylor2.jpg", 
    status: "DELETE" 
} 

Я прочитал из JSON просто отлично:

$data_url = 'data.json'; 
$data_json = file_get_contents($data_url); 
$data_array = json_decode($data_json, true); 
//plus a bunch of _GET stuff here... 
... 

// then write to JSON like so 
$data[$name] = array(
    'name' => $name, 
    'title' => $title, 
    'photo_url' => $photo_url, 
    'status' => $status 
    ); 

//EDIT - this is my feeble attempt 
if($status == 'DELETE'){ 
    unset($data[$name]); 
}; 
//END EDIT 

// merge and write array to json  
$data_array = array_merge($data_array, $data); 
file_put_contents('data.json', json_encode($data_array, JSON_FORCE_OBJECT)); 

Но не могу понять, как удалить запись ...

+0

Я не вижу попытку манипулирования $ data_array после того как вы json_decode'd данные для удаления ключей со статусом «Удалить». Вам также не нужен JSON_FORCE_OBJECT, поскольку вы вынуждаете data_array быть ассоциативным массивом в вашем декодирующем вызове. – ssnobody

+0

ОК, я поставил свою первую лучшую попытку. даже не вдавил его, хотя ... –

+0

Ответ Марко выглядит хорошо. Как он указывает, вам нужно пройти каждый элемент в данных (foreach), проверить, установлен ли для этого элемента значение DELETE, и если это так, удалите этот элемент из данных. – ssnobody

ответ

2

Как я могу видеть, вы пытаетесь удалить часть json в php.

Вы можете использовать этот код:

foreach($data as $key=>$val){ 
    // check status 
    if ($val["status"]=="DELETE"){ 
     // this deletes record from array 
     unset($data[$key]); 
    } 
} 

file_put_contents('data.json', json_encode($data, JSON_FORCE_OBJECT)); 
Смежные вопросы