基于其他数组对JSON对象数组的更改


Changes to array of JSON objects based on other array

我有一个JSON对象数组,如下所示:

{"id":1,"place":2,"pic_name":"aaa.jpg"}

我的PHP文件收到一个简单的数组,如:

["4","3","1","2","5"]

这些数字对应于我的JSON对象中的位置值。现在,我需要将secont数组中每个元素的位置与JSON对象中ID的值进行比较,如果匹配,我必须将place的值替换为数组中的元素。我在做比较时遇到了问题。有什么指导方针吗?我想到的:

foreach($ids as $index=>$id) { //the array
$id = (int) $id;
foreach ($obj as $key=>$value) { //the JSON objects
  foreach ($value as $k=>$v){ 
  if ($id != '' && array_search($index, array_keys($ids)) == $value[$k]['id'])  {
      $value[$k]['place'] = $id;
      file_put_contents($file, json_encode($ids));
    } else { print "nope";}  
  }  }  }

这将是:

$array = [
'{"id":1,"place":2,"pic_name":"aaa.jpg"}',
'{"id":2,"place":5,"pic_name":"aab.jpg"}',
'{"id":3,"place":1,"pic_name":"aba.jpg"}',
'{"id":4,"place":3,"pic_name":"baa.jpg"}',
'{"id":5,"place":4,"pic_name":"abb.jpg"}'
];
$places = ["4","3","1","2","5"];
$array = array_map(function($item)
{
   return json_decode($item, 1);
}, $array);
foreach($array as $i=>$jsonData)
{
   if(false!==($place=array_search($jsonData['id'], $places)))
   {
      $array[$i]['place'] = $place+1;
   }
}
$array = array_map('json_encode', $array);
//var_dump($array);

-输出类似:

阵列(5){[0]=>string(39)"{"id":1,"place":3,"pic_name":"aaa.jpg"}"[1] =>string(39)"{"id":2,"place":4,"pic_name":"aab.jpg"}"[2] =>string(39)"{"id":3,"place":2,"pic_name":"aba.jpg"}"[3] =>string(39)"{"id":4,"place":1,"pic_name":"baa.jpg"}"[4] =>string(39)"{"id":5,"place":5、"pic_name":"abb.jpg"}"}