PHP.按键对顶部的数组元素进行排序


PHP. Sort array element on top by key

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

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

$key="cat">,所以字符串">cat"要是数组的第一个元素。如何做到这一点?

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

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

以上所有解决方案都可以与所提供的输入阵列配合使用

$array=数组('dog','bird','cat','mon'(;

但是,如果输入数组在关联数组中,则上述解决方案将不起作用。请参阅下面更改的输入数组:

$array=数组('rist'=>'foo','dog','bird','cat','mon','cat'(;

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

函数定义

函数moveToTop($array,$key({foreach($array as$index=>$value(($value!=$key($newArray[$index]=$value:";array_unshift($newArray,$key(;return$newArray;}

函数调用

moveToTop($array,$key(

输出

大堆([0]=>猫[first]=>foo[1] =>狗[2] =>鸟[3] =>月亮)