2014-05-19 194 views
0

我有一个数组我想按照优先级DESC的值排序。多维数组按键值排序PHP

"status":"OK", 
"baseurl":"http://www.test.com", 
"pictureurl":"http://www.test.com", 
"result":[ 
    { 
     "videoid":"60", 
     "username":"1556495708", 
     "submittime":"1400112000", 
     "videotitle":"Test Video", 
     "videodescription":"Test Video Description", 
     "priority":12 
    }, 
    { 
     "videoid":"61", 
     "username":"1556495708", 
     "submittime":"1400151306", 
     "videotitle":"Test Video", 
     "videodescription":"Test Video Description", 
     "priority":20 
    } 

] 

我用这个代码,但它不是work.Its总是给结果=“空”

我使用的代码

function aasort (&$array, $key) { 
    $sorter=array(); 
    $ret=array(); 
    reset($array); 
    foreach ($array as $ii => $va) { 
     $sorter[$ii]=$va[$key]; 
    } 
    asort($sorter); 
    foreach ($sorter as $ii => $va) { 
     $ret[$ii]=$array[$ii]; 
    } 
    $array=$ret; 
} 



    $output = array(
       'status' => $status, 
       'baseurl' =>$baseURL, 
       'pictureurl' =>$imagebaseURL, 
       'result' => aasort($info,"priority") 
      ); 

我如何排序这个数组由值了“优先级“DESC

+1

'aasort'不返回任何东西。 –

回答

1

这将做到这一点,您将需要先提取数组并解码它。

echo '<pre>'; 

$json = ' 
[ 
    { 
     "videoid":"60", 
     "username":"1556495708", 
     "submittime":"1400112000", 
     "videotitle":"Test Video", 
     "videodescription":"Test Video Description", 
     "priority":12 
    }, 
    { 
     "videoid":"61", 
     "username":"1556495708", 
     "submittime":"1400151306", 
     "videotitle":"Test Video", 
     "videodescription":"Test Video Description", 
     "priority":20 
    } 

]'; 
$array = json_decode($json, true); 

function do_sort($a, $b) { 
    return $b['priority'] - $a['priority']; 
} 

usort($array, 'do_sort'); 

print_r($array); 
+2

你实际上想'返回$ a ['priority'] - $ b ['priority'];'。 –

+0

@RocketHazmat谢谢 – Flosculus

0

PHP> = 5.5.0

$array = json_decode($json, true); 
array_multisort(array_column($array['result'], 'priority'), 
    SORT_DESC, $array['result']);