【发布时间】:2012-05-20 11:31:44
【问题描述】:
我正在尝试按字母顺序对一组学生姓名进行排序。在数组中,我们有 $user['firstname'] 和 $user['lastname']。我想对它进行排序,使 A/a 先出现,然后 Z/z 出现在最后。如果他们的名字相同,那么我们将与姓氏进行比较。我的问题是我已经为这种排序创建了功能,但它不区分大小写。
这是我到目前为止所做的:
uasort($students, array($this, 'nameCompare'));
private function nameCompare($a, $b)
{
if ($a['firstname'] == $b['firstname'])
{
if($a['lastname'] < $b['lastname'])
{
return -1;
}
else if ($a['lastname'] > $b['lastname'])
{
return 1;
}
else //last name and first name are the same
{
return 0;
}
}
return ($a['firstname'] < $b['firstname']) ? -1 : 1;
}
感谢您的帮助。
【问题讨论】:
-
使用
strnatcasecmp()代替大于和小于运算符。 -
如果您希望不区分大小写,则在进行实际比较之前强制您的值全部为小写(或全部为大写)......并且在处理字符串比较时,请查看 strcmp() 函数- uk.php.net/manual/en/function.strcmp.php - 而不是 > 和
-
干杯马里奥,正是我需要的。
标签: php sorting alphabetical