我希望有人可以帮助我,我需要根据第2号阵列的位置命令数组No.1,使用array1->id
到array2->products_id
数组No.1
{"products":[{"id": 9847760515,"title":"Some Dress"},{"id": 10769647619,"title":"Shirt"}]}
数组No.2,其中的顺序是:(位置“:x)
{"collects":[{"id":38447047939,"product_id":10769647619,"position":1,"sort_value":"0000000001"},{"id":25425594499,"product_id":9847760515,"position":3,"sort_value":"0000000003"}]}
foreach ($sorted_array as $product) {
echo $product['name'];
}
感谢任何帮助
答案 0 :(得分:0)
您可以创建一个函数,它将采用两个数组并按照您需要的任何格式对它们进行排序:
/**
* sort_array will take two arrays and will sort the first based on the second
*
* @param $array the array you want to reorder
* @param $order the array with the pattern
*
* @return array_multisort with reordered array
*/
function sort_array(&$array, $order, $dir = SORT_ASC) {
// create an empty array here
$sort = array();
// loop through the main array
foreach ($array as $key => $row) {
$sort[$key] = $row[$order];
}
array_multisort($sort, $dir, $array);
}
使用array_multisort
,您可以对多维或多维数组进行排序。"有关详细信息,请参阅PHP Manual;有关如何使用它的进一步信息。
我的回答基于以前的answered question Stack Overflow。
答案 1 :(得分:0)
您可以使用usort
函数向第二个数组提供订单:
Current Season 2017/2018
我们使用array_combine
和array_column
函数准备排序字典(Current Season 2017/2018
)。请注意,为了使用array_column
函数,您必须将JSON转换为数组数组(将$sort = array_combine(
array_column($array2, 'product_id'),
array_column($array2, 'position')
);
usort($array1, function ($a, $b) use ($sort) {
return $sort[$a['id']] - $sort[$b['id']];
});
作为json_decode
函数的第二个参数传递)。