2017-07-27 64 views
-1

,我有以下陣列我想價值,A到Z,並存儲在一個 arary $atoz_people排序排序多維數組的字母順序,按價值計算,其存儲在一個新的變量

$people = (
[0] => Array 
    (
     [id] => 1 
     [name] => Ken 
    ) 

[1] => Array 
    (
     [id] => 2 
     [name] => Anne 
    ) 

[2] => Array 
    (
     [id] => 3 
     [name] => Bob 
    ) 

); 

我用 「經典」 asort($people)

$atoz_people = $people; 
asort($atoz_people); 
print_r($atoz_people); 

它不工作,很遺憾。爲了得到下面的數組,我應該改變什麼?它甚至有可能嗎?

$atoz_people = (
    [1] => Array 
    (
     [id] => 2 
     [name] => Anne 
    ) 
    [2] => Array 
    (
     [id] => 3 
     [name] => Bob 
    ) 
    [0] => Array 
    (
     [id] => 1 
     [name] => Ken 
    )  

); 
+0

[按值排序多維數組]的可能重複(https://stackoverflow.com/questions/2699086/sort-multi-dimensional-array-by-value) – 2017-07-27 09:21:36

+0

首先,您必須定義問題。你怎麼知道這個*「不起作用」*?什麼是預期的輸出?而**爲什麼**是*那*預期的產出而不是你現在擁有的產出? – axiac

+0

它不起作用,因爲它是一個多維數組。 asort是一個正常的數組。你需要usort。 – Loko

回答

0

對於多維您可以使用方法如usortuasort

uasort($people,"sort_name"); 
var_dump($people); 
function sort_name($a,$b) 
{ 
    return $a["name"] > $b["name"]; 
} 

檢查link

OR

link

+0

它的工作原理,但稍作修改。謝謝! –

1

1)存儲inital陣列中的一個新的變量:

$atoz_people = $people; 

2)創建排序功能:

function sort_by_name($a,$b) 
{ 
    return $a["name"] > $b["name"]; 
} 

3)分類陣列

uasort($atoz_people,"sort_by_name"); 
print_r_html($atoz_people); 

@B。德賽:非常感謝!