对 PHP 数组进行排序,并在顶部保留一个条目
asort PHP Array and keep one entry at the top
我有一个PHP数组
我想按字母顺序对其进行排序,并在顶部保留一个精确的条目:
$arr = array ("Orange", "Banana", "Strawberry", "Apple", "Pear");
asort($arr);
现在这将输出:
Apple, Banana, Orange, Pear, Strawberry
我希望它保留 Orange 作为第一个条目,然后对其他条目重新排序:
Orange, Apple, Banana, Pear, Strawberry
谢谢。
从数组中获取第一个元素,然后return返回:
$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);
您可以使用自定义函数传入一个元素以保持在顶部 uasort
:
$keep = 'Orange';
uasort($arr, function ($lhs, $rhs) use ($keep) {
if ($lhs === $keep) return -1;
if ($rhs === $keep) return 1;
return $lhs <=> $rhs;
});
Orange 在数组中的位置无关紧要,它会找到最前面的路径。
编辑:请注意,<=>
运算符需要 PHP 7。如果您使用的是 5
,则可以调用 strcmp
来替换
我有一个PHP数组
我想按字母顺序对其进行排序,并在顶部保留一个精确的条目:
$arr = array ("Orange", "Banana", "Strawberry", "Apple", "Pear");
asort($arr);
现在这将输出:
Apple, Banana, Orange, Pear, Strawberry
我希望它保留 Orange 作为第一个条目,然后对其他条目重新排序:
Orange, Apple, Banana, Pear, Strawberry
谢谢。
从数组中获取第一个元素,然后return返回:
$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);
您可以使用自定义函数传入一个元素以保持在顶部 uasort
:
$keep = 'Orange';
uasort($arr, function ($lhs, $rhs) use ($keep) {
if ($lhs === $keep) return -1;
if ($rhs === $keep) return 1;
return $lhs <=> $rhs;
});
Orange 在数组中的位置无关紧要,它会找到最前面的路径。
编辑:请注意,<=>
运算符需要 PHP 7。如果您使用的是 5
strcmp
来替换