2013-02-21 268 views
-1

我有這樣的陣列:PHP排序陣列

$user_data = array(); 
while($row=mysql_fetch_array($result)) 
{ 
$user_data[$row['id_user']]['id_user'] = $row['id_user']; 
$user_data[$row['id_user']]['firstname'] = $row['firstname']; 
$user_data[$row['id_user']]['lastname'] = $row['lastname']; 
$user_data[$row['id_user']]['avatar'] = $row['avatar']; 
} 

我想通過姓名例如使用PHP(未SQL或Jquery的)來排序。

+0

閱讀PHP函數[sort()](http://php.net/manual/en/function.sort.php) – estrar 2013-02-21 10:57:25

回答

0

添加此之後while循環,並嘗試:

$sort = array(); 
foreach($user_data as $k=>$v) { 
    $sort['firstname'][$k] = $v['firstname']; 
} 

array_multisort($sort['firstname'], SORT_DESC, $user_data); 


echo "<pre>"; 
print_r($user_data); 

沒有測試過,如果你正在任何問題,請在這裏評論。

+0

我得到這個:Warning:array_multisort():參數#1預計是一個數組或排序標誌 – echo 2013-02-21 11:59:20

+0

哦..我很抱歉它是'$ sort ['firstname']'不'$ sort ['點']'..我現在編輯它,請檢查它 – 2013-02-21 12:24:25

0

看看doc。請使用SORT_STRING標誌按名字排序。

0

你可能想要使用的是php的uasort函數。它允許您指定將在排序過程中使用的自己的比較函數。

PHP文件:uasort

0

排序它的名字在你的數據庫查詢:

... 
ORDER BY firstname 

畢竟,這是數據庫檢索數據。當你在第一步中完成這些工作時,沒有必要再次處理數據。

+0

_not sql或Jquery_ =>他不想使用SQL。 – Val 2013-02-21 11:00:42

+0

不知道是否刪除我的答案或OP因爲不熟悉而忽略了sql的選項。 – 2013-02-21 11:16:13

0

array_multisort該手冊有一個example正是這個用例:

$data[] = array('volume' => 67, 'edition' => 2); 
$data[] = array('volume' => 86, 'edition' => 1); 
$data[] = array('volume' => 85, 'edition' => 6); 
$data[] = array('volume' => 98, 'edition' => 2); 
$data[] = array('volume' => 86, 'edition' => 6); 
$data[] = array('volume' => 67, 'edition' => 7); 

// Obtain a list of columns 
foreach ($data as $key => $row) { 
    $volume[$key] = $row['volume']; 
    $edition[$key] = $row['edition']; 
} 

// Sort the data with volume descending, edition ascending 
// Add $data as the last parameter, to sort by the common key 
array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data); 
+0

與[此答案](http://stackoverflow.com/a/4582659/1384214)相同。 – Val 2013-02-21 11:03:29

+0

它似乎應該工作,但它不。不知道我做錯了什麼。你可以看看我在OP的代碼,並告訴我究竟應該如何編寫排序代碼? – echo 2013-02-21 12:28:00

+0

沒關係,我明白了。 – echo 2013-02-21 12:50:07