ASORT php阵列,将一个入口保持在顶部



我有一个php数组

我想按字母顺序排序,并在顶部保持精确的入口:

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

现在将输出:

Apple, Banana, Orange, Pear, Strawberry

我希望它保留橙色作为第一个条目,然后重新排序其他条件:

Orange, Apple, Banana, Pear, Strawberry

谢谢。

您可以通过自定义函数和 uasort传递以保持在顶部:

$keep = 'Orange';
uasort($arr, function ($lhs, $rhs) use ($keep) {
  if ($lhs === $keep) return -1;
  if ($rhs === $keep) return 1;
  return $lhs <=> $rhs;
});

橙色在阵列中的位置都不重要,它会找到前面的方式。

编辑:请注意,<=>操作员需要PHP7。如果您使用的是5

,则可以用strcmp的调用替换

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

$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);

相关内容

  • 没有找到相关文章

最新更新