asort PHP Array并在顶部保留一个条目

时间:2017-09-04 16:14:07

标签: php arrays sorting asort

我有一个PHP数组

我想按字母顺序对其进行排序,并在顶部保留一个精确的条目:

Apple, Banana, Orange, Pear, Strawberry

现在输出:

Orange, Apple, Banana, Pear, Strawberry

我希望它将Orange作为第一个条目,然后重新排序其他条目:

arr = [format(x, '7d') for x in range(40, 999, 40)]
print('\n'.join(''.join(arr[i:i+6]) for i in range(0, len(arr), 6)))

感谢。

2 个答案:

答案 0 :(得分:4)

您可以使用自定义函数传递元素以保持在顶部angular.module('plunker', []);

uasort

橙色阵列的位置无关紧要,它会找到前方的路径。

编辑:注意,$keep = 'Orange'; uasort($arr, function ($lhs, $rhs) use ($keep) { if ($lhs === $keep) return -1; if ($rhs === $keep) return 1; return $lhs <=> $rhs; }); 运算符需要PHP 7.如果您使用的话,可以替换为<=>的调用

答案 1 :(得分:1)

从数组中获取第一个元素,然后将其返回:

$arr = array ("Orange", "Banana", "Strawberry", "Apple", "Pear");

$first = array_shift($arr);
asort($arr);
array_unshift($arr, $first);

使用未知orange位置进行更新:

$arr = array ("Banana", "Orange", "Strawberry", "Apple", "Pear"); 
// $k is index of "Orange" in array
$k = array_search('Orange', $arr);
// store element with founded $k in a variable 
$orange = $arr[$k];
// remove $k element from $arr
// same as `unset($arr[$k]);`
array_splice($arr, $k, 1);
// sort 
asort($arr);
// add element in the beginning
array_unshift($arr, $orange);