$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] =>月亮)