2017-05-24 3 views
3

Mon JSON comme ceci:Comment puis-je supprimer un élément json par une valeur sub json?

[{"id": 1, "name": "xkCT0QUAK7alZkYkbrLUfxoYyn9aXMh2kyCZeYFW.jpeg"}, 
{"id": 2, "name": "9Tg1QLJGiHPC39KP20iOgy3cYQSXOllJTEBGPcF7.jpeg"}, 
{"id": 3, "name": "fWEfhpRkfy44lqC3Ro1etJKmOOkMXnLJLT4ncS6x.png"}] 

Je variables $id

si $id = 2, il enlèvera JSON qui ont id = 2

si $id = 3, il enlèvera JSON qui ont id = 3

Par exemple, il supprimera json qui ont id = 2

JSON ci-dessus pour ressembler à ceci:

[{"id": 1, "name": "xkCT0QUAK7alZkYkbrLUfxoYyn9aXMh2kyCZeYFW.jpeg"}, 
{"id": 2, "name": "fWEfhpRkfy44lqC3Ro1etJKmOOkMXnLJLT4ncS6x.png"}] 

Lorsque supprimé, son identifiant sera triée retour

Comment puis-je faire?

Répondre

2

Entrée de l'échantillon:

$json='[{"id": 1, "name": "xkCT0QUAK7alZkYkbrLUfxoYyn9aXMh2kyCZeYFW.jpeg"}, 
{"id": 2, "name": "9Tg1QLJGiHPC39KP20iOgy3cYQSXOllJTEBGPcF7.jpeg"}, 
{"id": 3, "name": "fWEfhpRkfy44lqC3Ro1etJKmOOkMXnLJLT4ncS6x.png"}]'; 
$id=2; 

Méthode (Demo):

$new_id=0; 
$input=json_decode($json,true); 
foreach($input as $i=>$a){ 
    if($a['id']==$id){ 
     unset($input[$i]);     // remove the desired subarray 
    }else{ 
     $input[$i]['id']=++$new_id;   // set correct id value (and increment $new_id) 
    } 
} 

$input=json_encode(array_values($input)); // re-index first-level keys & json encode 
var_export($input); 

Sortie:

'[{"id":1,"name":"xkCT0QUAK7alZkYkbrLUfxoYyn9aXMh2kyCZeYFW.jpeg"}, 
    {"id":2,"name":"fWEfhpRkfy44lqC3Ro1etJKmOOkMXnLJLT4ncS6x.png"}]' 
+0

Merci beaucoup pour vous aider à –

+0

Ok. Je l'avais supprimé –