我有 2 个查询生成这 2 个数组
[{"FGNo":"5"},{"FGNo":"3"},{"FGNo":"4"},{"FGNo":"6"}]
和
[{"FGNo":"3","Actual":"48"},{"FGNo":"4","Actual":"38"},{"FGNo":"5","Actual":"41"},{"FGNo":"6","Actual":"16"}
我不确定如何使用第一个数组来排列第二个数组,如下所示
{"FGNo":"5","Actual":"41"},[{"FGNo":"3","Actual":"48"},{"FGNo":"4","Actual":"38"},,{"FGNo":"6","Actual":"16"}
我尝试使用嵌套的循环,但我似乎无法让它工作。
此示例使用usort()
和自定义值比较函数。由于您的"数组"是 JSON 对象,我们需要使用 json_decode()
将它们转换为 PHP 数组。然后我们需要创建一个数组,该数组将用于对较大的数组进行排序。
请参阅下面哈桑的代码。
$orderArray = json_decode('[{"FGNo":"5"},{"FGNo":"3"},{"FGNo":"4"},{"FGNo":"6"}]', true);
$arrayToSort = json_decode('[{"FGNo":"3","Actual":"48"},{"FGNo":"4","Actual":"38"},{"FGNo":"5","Actual":"41"},{"FGNo":"6","Actual":"16"}]', true);
$keys = array_flip(array_column($orderArray, 'FGNo'));
usort($arrayToSort, function($a, $b) use ($keys) {
if ($keys[$a['FGNo']] == $keys[$b['FGNo']]) {
return 0;
}
return $keys[$a['FGNo']] < $keys[$b['FGNo']] ? -1 : 1;
});
print_r(json_encode($arrayToSort));
// [{"FGNo":"5","Actual":"41"},{"FGNo":"3","Actual":"48"},{"FGNo":"4","Actual":"38"},{"FGNo":"6","Actual":"16"}]
不要忘记在usort()
功能之后json_encode()
$arrayToSort
!