使用PHP编辑json数组中的记录

时间:2016-11-04 00:10:02

标签: php json

我试图使用json作为数据源构建一个简单的php应用程序。 到目前为止,我已检索到,从我的json文件中删除了添加的数据,但我无法更新它。

我的json文件是这样的:

{"categories":[
       {"id":"08a97ed88c141d179bf7710afe60bfe9","title":"TEST","thumb":".\/images\/test.jpg","desc":"adasdasdasdasdasdasdasdasd","featured":true},
       {"id":"8f1bf832e9edb8564f517eb62d4f3b7c","title":"TEST 2","thumb":".\/images\/test 2.jpg","desc":"asdsdsdsadsadasdsdsadasdasdasdsadas","featured":true}
       ]}

我希望能够从其中一个记录键更新值。

以下是我尝试更新它的方法:

$arr = file_get_contents('./data/categories.json');
$arr_obj = json_decode($arr, true);

foreach($arr_obj['categories'] as $key) {
  if($key['id'] == $_POST['catId']){
       $key['desc'] = $_POST['catDesc'];
  }
}
echo json_encode($arr_obj);

但是没有在json中进行更新。

任何帮助都会被贬低!

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为这是你真正想做的事情:

<?php
//...
$arr = file_get_contents('./data/categories.json');
$arr_obj = json_decode($arr, true);

foreach($arr_obj['categories'] as $category) {
  if($category['id'] == $_POST['catId']){
       $arr_obj['categories'][$category]['desc'] = $_POST['catDesc'];
  }
}
echo json_encode($arr_obj);

不同之处在于您自己的代码在该数组中的条目的副本上设置描述,而不是在数组中的原始条目上。