我有一个如下结构的数组
$array1 = array(
[123] => array('1'=>'1','2'=>'3'),
[345] => array('1'=>'3','2'=>'5'),
[789] => array('1'=>'1','2'=>'5'),
[567] => array('1'=>'6','2'=>'5'),
);
另一个数组结构为 $array2 = array(567,345,789,123);
现在我想用 php 排序函数对这个数组进行排序,我的意思是对第一个数组和第二个数组进行排序,使其看起来像所需的输出 下面
$array1 = array(
[567] => array('1'=>'6','2'=>'5'),
[345] => array('1'=>'3','2'=>'5'),
[789] => array('1'=>'1','2'=>'5'),
[123] => array('1'=>'1','2'=>'3'),
);
我想用任何已经存在的排序函数得到这些期望的结果。
谢谢。
最佳答案
循环您的 $array2
并填充第三个数组,如下所示:
$array1 = array(
[123] => array('1'=>'1','2'=>'3'),
[345] => array('1'=>'3','2'=>'5'),
[789] => array('1'=>'1','2'=>'5'),
[567] => array('1'=>'6','2'=>'5'),
);
$array2 = array(567,345,789,123);
$orderedArray = array();
foreach ($array2 as $key) {
$orderedArray[$key] = $array1[$key];
}
如果你想要一个函数:
function orderArray($arrayToOrder, $keys) {
$ordered = array();
foreach ($keys as $key) {
if (isset($arrayToOrder[$key])) {
$ordered[$key] = $arrayToOrder[$key];
}
}
return $ordered;
}
$myOrderedArray = orderArray($array1, $array2);
关于php - 在 PHP 中使用自定义键对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31055645/