2014-05-19 2 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 항상 결과에게 나는 "의 값에 의해이 배열을 정렬 할 수 있습니다 어떻게 ="null이 "

내 사용 코드

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 [ '우선 순위'] - $ b [ '우선 순위'];'를 반환하고 싶습니다. –

+0

@RocketHazmat 감사 – Flosculus

0

PHP는> = 5.5.0 :

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