2010-08-18 62 views
2

我想排序PHP数组开始我设定的值排序数组开始与给定值

例子:

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

如何排序,使“橙色”是第一个结果那么它就按字母排序。

因此,这将是
橙色
苹果
香蕉
菠萝

任何帮助将不胜感激。

回答

9

您可以创建自己的自定义排序函数,然后使用usort(或uasort如果要保留您的数组键 - 在提醒的评论感谢以撒)到您的数组排序是:

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"); 
+4

使用uasort保存键关联。 – Isaac 2010-08-18 20:18:15

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