我有一个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";}
} } }
答案 0 :(得分:0)
那将是:
$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);
- 输出如:
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"}" }