2016-07-01 13 views
1

我已經建立像PHP通過值排序多維陣列使用uasort

$arr[0]['ref']=5; 
$arr[0]['name']='name0'; 

$arr[1]['ref']=6; 
$arr[1]['name']='name1'; 

$arr[2]['ref']=4; 
$arr[2]['name']='name2'; 

$arr[3]['ref']=''; 
$arr[3]['name']='name3'; 

$arr[4]['ref']='9'; 
$arr[4]['name']='name4'; 

$arr[5]['ref']='' 
$arr[5]['name']='name5' 

我要排序此陣列等使用參考值

$arr[2]['ref']=4; 
$arr[2]['name']='name2'; 

$arr[0]['ref']=5; 
$arr[0]['name']='name0'; 

$arr[1]['ref']=6; 
$arr[1]['name']='name1'; 

$arr[4]['ref']='9'; 
$arr[4]['name']='name4'; 

$arr[3]['ref']=''; 
$arr[3]['name']='name3'; 

$arr[5]['ref']='' 
$arr[5]['name']='name5' 

我試圖

uasort($arr, function($a, $b){ 
    return $a['ref'] - $b['ref']; 
}); 
一個ARRY具有NULL

但'值'是在一開始。我怎樣才能推下''。

在此先感謝。我是初學者。請原諒我,如果我要求很簡單的問題

回答

2

這將完成這項工作:

uasort($arr, function($a, $b){ 
    if ($a['ref'] == "") return 1; 
    if ($b['ref'] == "") return -1; 
    return $a['ref'] - $b['ref']; 
}); 
0

你可以嘗試

uasort($arr, function($a, $b){ 
    return -($a['ref'] - $b['ref']); 
}); 
+0

這是按降序排列 – user231410

0

可以使用數組的末尾添加空值本:

uasort($arr, function($a, $b){ 
    return $a['ref'] - $b['ref']; 
}); 

//strip empties and move to end 
foreach ($arr as $key => $value) 
{ 
    if ($value['ref'] == "") 
    { 
     unset($arr[$key]); 
     $arr[] = $value; 
    } 
} 

// rebuild array index 
$arr = array_values($arr); 

輸出:

Array 
(
    [0] => Array 
     (
      [ref] => 4 
      [name] => name2 
     ) 

    [1] => Array 
     (
      [ref] => 5 
      [name] => name0 
     ) 

    [2] => Array 
     (
      [ref] => 6 
      [name] => name1 
     ) 

    [3] => Array 
     (
      [ref] => 9 
      [name] => name4 
     ) 

    [4] => Array 
     (
      [ref] => 
      [name] => name5 
     ) 

    [5] => Array 
     (
      [ref] => 
      [name] => name3 
     ) 

)