2012-03-13 31 views
0
array("name" => "", 
     "uid" => "", 
     "nid" => "", 
     "vid" => ""); 

,我需要它排序是这样的:排序这个数组根据自定义条件

array("nid" => "", 
     "uid" => "", 
     "vid" => "", 
     "name" => ""); 

但我似乎无法弄清楚array_map,uksort()......或任何其他。感谢

+1

什么_is_的标准是什么? – 2012-03-13 22:57:12

回答

2

不是那种因为如此,但如果你只盯着4个按键,那么为什么不:

$newArray = array("nid" => $array["nid"], "uid" => $array["uid"], "vid" => $array["vid"], "name" => $array["name"]); 
+0

因为有时候第一个数组并没有所有的键,我需要把键存在(即使这个值为空),这最终会工作得最好,谢谢。 – 2012-03-13 23:15:08

0

你可以使用uksort()

function myksort($a, $b) { 
    $korder = array('nid', 'uid', 'vid', 'name'); 
    return (array_search($a, $korder) < array_search($b, $korder)) : -1 ? 1; 
} 

uksort($array, 'myksort'); 
1

您是否检查了function reference for uksort?

既然你要以升序通过其按键的字母顺序排序的数组,但有“姓名”键最后,即使你以后添加附加键这应该工作:

<?php 

class MySortHelper 
{ 
    function sort_my_array($a, $b) 
    { 
     if ($a == $b) return 0; 

     if ($a == 'name') return 1; 
     if ($b == 'name') return -1; 

     return ($a > $b) ? 1 : -1; 
    } 
} 

// ... 

$my_sort_helper = new MySortHelper(); 
uksort($my_array, array($my_sort_helper, 'sort_my_array'));