У меня есть файл JSON, который содержит следующее:
{"faqitem": [{ "id": "faq1", "question": "Question 1"}]}
Я пытаюсь сделать две вещи. Обновите конкретное значение, если оно существует ИЛИ добавьте новое значение, если оно отсутствует.
В настоящее время я могу обновить файл, но он просто добавляет новые значения и никогда не обновляется, если он уже существует.
$faqpage = 'includes/faq.json'; $file = file_get_contents($faqpage); $obj = json_decode($file); $newdata['id'] = "faq2"; $newdata['question'] = "This is the second question"; foreach($obj->faqitem as $key => $val ) { echo "IDS " . $val->id . " = " . $newdata['id'] . "<br/>\n"; if ($val->id == $newdata['id']) { $val->question = $newdata['question']; echo $val->id . "<br/>match<br/>"; } else { $newstuff = new stdClass; $newstuff->id = $newdata['id']; $newstuff->question = $newdata['question']; array_push($obj->faqitem, $newstuff); echo "<br/>no match<br/>"; } } echo json_encode($obj); $fh = fopen($faqpage, 'w') or die ("can't open file"); //okay now let's open our file to prepare it to write fwrite($fh, json_encode($obj)); fclose($fh);
Ниже приведен пример вывода с дублированными идентификаторами объектов:
{"faqitem":[{"id":"faq1","question":"Question 1"},{"id":"faq2","question":"This is the updated question"},{"id":"faq2","question":"This is the updated question"}]}