Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重新排列PHP数组_Php_Arrays - Fatal编程技术网

重新排列PHP数组

重新排列PHP数组,php,arrays,Php,Arrays,我有两个查询生成这两个数组 [{"FGNo":"5"},{"FGNo":"3"},{"FGNo":"4"},{"FGNo":"6"}] 及 我不知道如何使用第一个数组来排列第二个数组 {"FGNo":"5","Actual":"41"},[{"FGNo":"3","Actual":"48"},{"FGNo":"4","Actual":"38"},,{"FGNo":"6","Actual":"16"} 我尝试使用嵌套for循环,但似乎无法使其工作。此示例使用和自定义值比较函数。由于“数组”是J

我有两个查询生成这两个数组

[{"FGNo":"5"},{"FGNo":"3"},{"FGNo":"4"},{"FGNo":"6"}]

我不知道如何使用第一个数组来排列第二个数组

{"FGNo":"5","Actual":"41"},[{"FGNo":"3","Actual":"48"},{"FGNo":"4","Actual":"38"},,{"FGNo":"6","Actual":"16"}
我尝试使用嵌套for循环,但似乎无法使其工作。

此示例使用和自定义值比较函数。由于“数组”是JSON对象,我们需要使用将它们转换为PHP数组。然后我们需要创建一个数组,用于对较大的数组进行排序。
见下文

$orderArray=json_decode('[{“FGNo”:“5”},{“FGNo”:“3”},{“FGNo”:“4”},{“FGNo”:“6”}],true);
$arrayToSort=json_decode('[{“FGNo”:“3”,“实际”:“48”},{“FGNo”:“4”,“实际”:“38”},{“FGNo”:“5”,“实际”:“41”},{“FGNo”:“6”,“实际”:“16”}],true);
$keys=array\u flip(array\u列($orderArray,'FGNo');
usort($arrayToSort,函数($a,$b)use($keys){
如果($keys[$a['FGNo']]==$keys[$b['FGNo']])){
返回0;
}
返回$keys[$a['FGNo']<$keys[$b['FGNo']]?-1:1;
});
打印(json编码($arrayToSort));
//[{“FGNo”:“5”,“实际”:“41”},{“FGNo”:“3”,“实际”:“48”},{“FGNo”:“4”,“实际”:“38”},{“FGNo”:“6”,“实际”:“16”}]

不要忘记在
usort()
函数之后执行
$arrayToSort

最后一个是什么样的数据结构???@KarolyHorvath它是复制/粘贴前一个数组的混合体,因此可能是json。我使用json数组。我有两个查询-通过一个查询获取结果数组。我实际上想这样做,但我似乎无法使它工作。我有一个截止日期,所以我不得不临时凑合,我希望我能用这种方法使它工作停止使用
global
,改用
use
,使用
array\u column
而不是循环使用
$alignmentArray
array@AlexEspiritu我对代码做了一些更改(如@hassan所建议的),它的工作原理是一样的,但更好一点。@hassan谢谢,在答案中添加了它(包括适当的名称):)
{"FGNo":"5","Actual":"41"},[{"FGNo":"3","Actual":"48"},{"FGNo":"4","Actual":"38"},,{"FGNo":"6","Actual":"16"}
$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"}]