-1

我有这个数组:

$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)按名字对其进行排序。

4

5 回答 5

0

看看文档

您应该使用SORT_STRING标志按名字排序。

于 2013-02-21T10:58:30.540 回答
0

您可能想要使用的是 php 的 uasort 函数。它允许您指定将在排序过程中使用的自己的比较函数。

PHP 文档:uasort

于 2013-02-21T10:58:48.307 回答
0

在数据库查询中按名字对其进行排序:

...
ORDER BY firstname

毕竟,检索数据的是数据库。当您可以在第一步中完成时,再做处理数据的工作是没有意义的。

于 2013-02-21T10:59:42.180 回答
0

手册array_multisort有一个完全适用于这个用例的例子

$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);
于 2013-02-21T11:01:53.173 回答
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);

未经测试,如果您遇到任何问题,请在此处发表评论。

于 2013-02-21T11:40:17.707 回答