如何在PHP中按字母顺序对姓名(名字和姓氏)进行排序,不区分大小写?

如何在PHP中按字母顺序对姓名(名字和姓氏)进行排序,不区分大小写?,php,sorting,alphabetical,Php,Sorting,Alphabetical,我正在尝试按字母顺序排列一系列学生的名字。在数组中有$user['firstname']和$user['lastname']。我想对它进行排序,使A/A排在第一位,Z/Z排在最后。如果他们的名字是相同的,那么我们将与姓氏进行比较。我的问题是,我已经为这种排序创建了功能,但它不区分大小写 这就是我到目前为止所做的: uasort($students, array($this, 'nameCompare')); private function nameCompare($a, $b) { i

我正在尝试按字母顺序排列一系列学生的名字。在数组中有$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;
}
uasort($students,array($this,'nameCompare'));
私有函数名称比较($a,$b)
{
如果($a['firstname']=$b['firstname']))
{
如果($a['lastname']<$b['lastname']))
{
返回-1;
}
如果($a['lastname']>$b['lastname']),则为else
{
返回1;
}
否则//姓和名相同
{
返回0;
}
}
报税表($a['firstname']<$b['firstname'])?-1:1;
}
谢谢你的帮助。

我认为这个功能可能会有用。在函数的开头添加以下内容:

$a['firstname'] = strtolower($a['firstname']);
$a['lastname'] = strtolower($a['lastname']);
$b['firstname'] = strtolower($b['firstname']);
$b['lastname'] = strtolower($b['lastname']);
通过这样做,您可以将所有值转换为小写,从而消除函数的“敏感性”

希望有帮助。

以下是一个示例:

usort($students, function($a, $b) {
  if($cmp = strnatcasecmp($a['lastname'], $b['lastname'])) return $cmp;
  return strnatcasecmp($a['firstname'], $b['firstname']);
});

用于替换大于运算符和小于运算符。如果不区分大小写,则在进行实际比较之前,请强制将值全部小写(或全部大写)。。。在使用字符串比较时,请查看strcmp()函数,而不是>和可能重复的Cheers mario,这正是我所需要的。