我有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"}
我尝试使用嵌套for循环,但我似乎无法使其正常工作。
答案 0 :(得分:0)
此示例使用usort()
和自定义值比较功能。因为你的"阵列"是我们需要使用json_decode()
将它们转换为PHP数组的JSON对象。然后我们需要创建一个数组,用于对较大的数组进行排序
请参阅下面的code from hassan。
$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"}]
在$arrayToSort
函数之后忘记json_encode()
usort()
!