PHP。按键排列数组元素

时间:2015-07-02 22:34:54

标签: php arrays sorting

$key = "cat"
$array = array( dog,
                bird, 
                cat,
                moon );

需要这样的订单(按键): 猫,狗,鸟,月亮。

$ key =“cat”,因此字符串“ cat”需要是数组的第一个元素。 怎么做?

2 个答案:

答案 0 :(得分:5)

你实际上并没有排序,只是将数组中的某些内容移动到开头。它可能更简单,但这是一种方式:

array_unshift($array, current(array_splice($array, array_search($key, $array), 1))); 
  • array_search()查找包含$key
  • 的元素的索引
  • array_splice()删除该元素
  • array_unshift()将该元素添加到数组

答案 1 :(得分:2)

所有上述解决方案都可以正常使用提供的输入数组


    $array  = array('dog','bird', 'cat','moon');

但是如果输入数组在一个关联数组中,那么上面的解决方案将无法正常工作。请参阅下面更改的输入数组:


    $array = array('frist' => 'foo', 'dog','bird', 'cat','moon', 'cat');

在性能方面使用以下功能会很方便。它没有调用太多内置PHP数组函数的开销。此外,它将同时适用于顺序和关联的PHP数组。请参阅以下代码段:

功能定义


    function moveToTop($array, $key){
      foreach ($array as $index => $value) ($value != $key) ? $newArray[$index] = $value : '';
      array_unshift($newArray, $key);
      return $newArray;
    }

函数调用


    moveToTop($array, $key)

输出

    Array
    (
        [0] => cat
        [frist] => foo
        [1] => dog
        [2] => bird
        [3] => moon
    )