2016-09-24 32 views
1

私の.jsonファイルのレコードをidで削除するのは苦労しています。 だから、私のオリジナルJSONは次のようになります。PHPで.jsonファイルからIDで削除

[["{\"id\":1474753066818,\"name\":\"dd\",\"brand\":\"dd\",\"price\":\"12\"}"],["{\"id\":1474753069035,\"name\":\"dd3\",\"brand\":\"dd\",\"price\":\"12\"}"]] 

そして、これは私のPHPです:

<?php 
    $string = file_get_contents("products.json"); 
    //var_dump($string); 
    $input = json_decode($string, true); 
    $output = array(); 
    //here starts the problem 
    foreach($input as $element) { 
     if($_GET['data'] != $element[0]["id"]){ //add in array if id doesn't match 
      $output[] = $element; 
     } 
    } 
    $final = json_encode($output); 
    $f = @fopen("products.json", "r+"); 
    if ($f !== false) { 
     ftruncate($f, 0); 
     fclose($f); 
    } 
    file_put_contents("products.json", $final); 
    > 

基本的に私の問題は、私はこのようなものを反復していますforeachで起動:

array(2) { [0]=> array(1) { [0]=> string(58) "{"id":1474753066818,"name":"dd","brand":"dd","price":"12"}" } [1]=> array(1) { [0]=> string(59) "{"id":1474753069035,"name":"dd3","brand":"dd","price":"12"}" } } 

明らかにここで私はforeachでやろうとしているようにidにアクセスできません。全部が文字列です。

この文字列を配列に変換してIDを比較し、このポストの最初に表示されたオリジナルのJSON形式にエンコードし直すことはできません。

助けてください!

+1

JSONが無効です。 –

答えて

1

あなたproducts.jsonファイルは少し奇妙である、以下参照:

[ 
    [ 
    "{\"id\":1474753066818,\"name\":\"dd\",\"brand\":\"dd\",\"price\":\"12\"}" 
    ], 
    [ 
    "{\"id\":1474753069035,\"name\":\"dd3\",\"brand\":\"dd\",\"price\":\"12\"}" 
    ] 
] 

あなたproducts.jsonは、その値JSONエンコードされた文字列である1つの要素を配列の配列が含まれています。文字列の内容についてもう一度json_decodeと呼ぶ必要があるようです。

$final = json_encode($output); 
$f = @fopen("products.json", "r+"); 
if ($f !== false) { 
    ftruncate($f, 0); 
    fclose($f); 
} 
file_put_contents("products.json", $final); 

あなたが現在それを読んでいるのと同じ方法でproducts.jsonを節約終わるません。

foreach($input as $element) { 
    $product = json_decode($element[0]); 
    if($_GET['data'] != $product["id"]){ 
     //add in array if id doesn't match 
     $output[] = $product ; 
    } 
} 

それはあなたのコードの残りの部分があることに注意することも重要です。上記のコードでは、おそらくこのようになります:

[ 
    {"id":1474753066818,"name":"dd","brand":"dd","price":"12"}, 
    {"id":1474753069035,"name":"dd3","brand":"dd","price":"12"} 
] 
関連する問題