php - 在 PHP 中使用自定义键对数组进行排序

标签 php arrays sorting

我有一个如下结构的数组

$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/

相关文章:

java - Riak/Java - 使用 AND 条件和排序对二级索引进行 MapReduce 查询的最佳实践

php - SVN网站开发部署解决方案

javascript - 向 javascript 数组的 n 种组合添加计数器

sorting - Elasticsearch分组和按嵌套字段最小值的顺序

c++ - 使用 const 数组元素初始化

java - 用空数据拆分字符串

java - Arrays.sort() 和 Arrays.parallelSort() 之间的区别

php - AES 256 和 Base64 加密字符串在 iOS 8 上有效,但在 iOS 7 上被截断

php - 为什么数据表默认不能按降序显示数据?

php - 注册后登录/重定向 PHP mySQL