$key = "cat"
$array = array( dog,
bird,
cat,
moon );
需要这样的订单(按键): 猫,狗,鸟,月亮。
$ key =“cat”,因此字符串“ cat”需要是数组的第一个元素。 怎么做?
答案 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 )