【问题标题】:Arbitrarily order array keys任意排序数组键
【发布时间】:2015-11-13 22:50:54
【问题描述】:

我有一个数组,我需要通过一些任意定义重新排序,但我不确定 uksort 如何提供帮助。

这是我要排序的数组:

[
    [Alice] => foo,
    [Bob] => foo,
    [John] => foo,
    [Steve] => foo
]

我想将此数组重新排序为 Bob、Alice、Steve,然后是 John... 或其他一些明确声明的顺序。有没有办法获取一个 separate 数组并使用 that 重新排序原始的键?

我知道我可以遍历数组并构建一个新数组,但这似乎不太优雅...

【问题讨论】:

    标签: php arrays sorting


    【解决方案1】:

    好吧,在更多关于这个更性感之后:

    $finialOrderArray = array_merge(array_flip($orderArray), $array);
    

    也许有更性感的方式,但基本的 foreach 循环虽然排序顺序似乎是个好方法

    <?php
    $array=array('Alice' => 'foo','Bob' => 'foo','John' => 'foo','Steve' => 'foo');
    $orderArray=array('Bob', 'Alice', 'Steve', 'John');
    
    
    function orderArray($array, $orderArray) {
        $ordered = array();
        foreach($orderArray as $k) {
            if(array_key_exists($k,$array)) {
                $ordered[$k] = $array[$k];
    
            }
        }
        return $ordered;
    
    print_r(orderArray($array,$orderArray));
      //Array ( [Bob] => foo [Alice] => foo [Steve] => foo [John] => foo ) 
    

    【讨论】:

      猜你喜欢
      • 2018-03-29
      • 2014-09-26
      • 1970-01-01
      • 2020-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多