我想从我设置的值
开始排序一个php数组示例:
$array = array();
$array['test'] = 'banana';
$array['test2'] = 'apple';
$array['test3'] = 'pineapple';
$array['test4'] = 'orange';
我如何对它进行排序,以便'orange'是第一个结果,然后从那时起按字母顺序排序。
所以它会是
橙色
苹果
香蕉
菠萝
对此的任何帮助将不胜感激。
答案 0 :(得分:9)
您可以创建自己的自定义排序功能,然后使用usort
(或uasort
如果您想保留数组键 - 感谢Isaac在提醒的评论中)对数组进行排序用它:
function sort_fruit($a, $b)
{
if ($a == $b) return 0; // If the values are the same, usort expects 0
if ($a == "orange") return -1; // $a is orange, $b is not -> $a comes first
if ($b == "orange") return 1; // $b is orange, $a is not -> $b comes first
return strcmp($a, $b); // ... otherwise, sort normally
}
usort($array, "sort_fruit");
答案 1 :(得分:2)
这可能有点超过顶部,但我不知道有一种方法可以满足您的要求:
<?php
$old_array = array(
1 => 'banana',
2 => 'apple',
3 => 'pineapple',
4 => 'orange'
);
$search = 'orange';
$new_array = array();
if( ($key = array_search($search, $old_array)) !== FALSE)
{
$new_array[] = $search;
unset($old_array[$key]);
}
$new_array = array_merge($new_array, asort($old_array));