重新排列 PHP 数组



我有 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

最新更新