2013-02-21 176 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