2017-07-30 6 views
1

多分これは答えられましたが、ウェブ上のヘルプが見つかりません。ここでJSONのエントリをPHPに置き換えよう

は私の基本JSONファイルです:

ここ
[{"ID":"4215","date":"2017-05-24T05:41:44","text_wall":"Petite photo de Valence prise dimanche ","image_wall":"https:\/\/www.originsphotography.eu\/model\/wp-content\/uploads\/2017\/05\/IMG_0056.jpeg","ville_wall":"Valence "}, 

{"ID":"4147","date":"2017-05-18T15:15:02","text_wall":"#lyon #paris #valence Flixbus !","image_wall":"https:\/\/www.originsphotography.eu\/model\/wp-content\/uploads\/2017\/05\/IMG_0031.jpg","ville_wall":"Clermont-Ferrand"}, 

{"ID":"3834","date":"2017-05-16T03:54:27","ville_wall":"Clermont-Ferrand","image_wall":"https:\/\/www.originsphotography.eu\/model\/wp-content\/uploads\/2017\/05\/SAM_7590.jpg","text_wall":"Nouvelle station de travail Dell E4300"},] 

私は変更 "日付"、 "text_wall" とPHPから "ville_wall" をしたいと思います。

<?php 
header('Access-Control-Allow-Origin: *'); 
header('Access-Control-Allow-Methods: GET, POST'); 
header("Access-Control-Allow-Headers: X-Requested-With"); 

$id = $_POST['id']; 
$text = $_POST['text_wall']; 
$ville = $_POST['ville_wall']; 
$date = date("c"); 

$jsonString = file_get_contents('text.json'); 
$list = json_decode($jsonString); 

//Here is the problem I think 
for ($i = 0; $i < count($list); $i++) { 

    if ($list[$i]->ID === $id) { 
$list[$i]['text_wall'] = $text; 
    } 
} 

$list = array_values($list); 

$fp = fopen($file, 'w'); 
fwrite($fp, json_encode($list)); 
fclose($fp); 

?> 

感謝を事前にあなたの助けのために:私の知識が行くと、それは働いていないよう

はここに限り、私のPHPコードです。

+1

私はそれを掲示したときに、私はそれを削除するのを忘れて、あなたがこの有効なJSONもちろんの –

+0

はいを​​作成する]クロージング前に、削除する必要があり、すべての最初の。私は3つのエントリに短縮しなければならなかった –

答えて

1

おそらく、このようなものを試すことができます。値を割り当てて配列に置き換えて繰り返します。

$id=!empty($_POST['id']) ? $_POST['id'] : 4147; 

$text=!empty($_POST['text_wall']) ? $_POST['text_wall'] : 'Humboldt Squid are vicious mofos'; 
$ville=!empty($_POST['ville_wall']) ? $_POST['ville_wall'] : 'Bananas are generally yellow'; 
$date=date('c'); 


$replace=array(/* Replace these keys with these values */ 
    'date'   => $date, 
    'text_wall'  => $text, 
    'ville_wall' => $ville 
); 


$keys=array_keys($replace); 

/* Contents from text file ~ trailing comma removed!!! */ 
$strjson='[ 
      {"ID":"4215","date":"2017-05-24T05:41:44","text_wall":"Petite photo de Valence prise dimanche ","image_wall":"https:\/\/www.originsphotography.eu\/model\/wp-content\/uploads\/2017\/05\/IMG_0056.jpeg","ville_wall":"Valence "}, 
      {"ID":"4147","date":"2017-05-18T15:15:02","text_wall":"#lyon #paris #valence Flixbus !","image_wall":"https:\/\/www.originsphotography.eu\/model\/wp-content\/uploads\/2017\/05\/IMG_0031.jpg","ville_wall":"Clermont-Ferrand"}, 
      {"ID":"3834","date":"2017-05-16T03:54:27","ville_wall":"Clermont-Ferrand","image_wall":"https:\/\/www.originsphotography.eu\/model\/wp-content\/uploads\/2017\/05\/SAM_7590.jpg","text_wall":"Nouvelle station de travail Dell E4300"} 
     ]'; 
/* decoded file contents */ 
$json=json_decode($strjson); 


/* iterate over json object */ 
foreach($json as $i => $obj){ 
    /* Only replace for specified ID */ 
    if($obj->ID==$id){ 
     /* iterate through replacements */ 
     foreach($replace as $key => $value){ 
      $obj->$key=$value; 
     } 
    } 
} 
/* for testing */ 
echo '<pre>',print_r($json,true),'</pre>'; 

/* Convert back to json string */ 
$json=json_encode($json); 

/* Save the file */ 
$bytes=file_put_contents('text.json',$json); 
0

最初にあなたのjsonは無効です。最後に,をjsonstringから削除する必要があります。次に、次のコードを試してください。

$jsonString = '[{"ID":"4215","date":"2017-05-24T05:41:44","text_wall":"Petite photo de Valence prise dimanche ","image_wall":"https:\/\/www.originsphotography.eu\/model\/wp-content\/uploads\/2017\/05\/IMG_0056.jpeg","ville_wall":"Valence "}, 

{"ID":"4147","date":"2017-05-18T15:15:02","text_wall":"#lyon #paris #valence Flixbus !","image_wall":"https:\/\/www.originsphotography.eu\/model\/wp-content\/uploads\/2017\/05\/IMG_0031.jpg","ville_wall":"Clermont-Ferrand"}, 

{"ID":"3834","date":"2017-05-16T03:54:27","ville_wall":"Clermont-Ferrand","image_wall":"https:\/\/www.originsphotography.eu\/model\/wp-content\/uploads\/2017\/05\/SAM_7590.jpg","text_wall":"Nouvelle station de travail Dell E4300"}]'; 



$list = json_decode($jsonString); 


foreach ($list as $key => $value) { 
    if ($value->ID == $id) { 
    $value->text_wall = $text; 
    } 
} 
$list = array_values($list); 
$fp = fopen($file, 'w'); 
fwrite($fp, json_encode($list)); 
fclose($fp); 
+0

残念それは動作していません=/ –

+0

'if($ value-> ID == $ id){'余分な '='を無視するように、 –

関連する問題