从给定值开始排序数组

时间:2010-08-18 20:06:09

标签: php

我想从我设置的值

开始排序一个php数组

示例:

$array = array();
$array['test'] = 'banana';  
$array['test2'] = 'apple';  
$array['test3'] = 'pineapple';  
$array['test4'] = 'orange';  

我如何对它进行排序,以便'orange'是第一个结果,然后从那时起按字母顺序排序。

所以它会是 橙色
苹果
香蕉
菠萝

对此的任何帮助将不胜感激。

2 个答案:

答案 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));