php-按多个变量排序列表
我正在使用下面的代码按用户名对用户列表进行排序,但我需要sortByName函数的帮助,因为我想按姓氏对列表进行排序,作为辅助项。因此,如果有两个Bob,它将按姓氏字母顺序排列,而不是随机排列。我试着在名字相同的时候添加一个if语句,但我最终以某种方式打破了它php-按多个变量排序列表,php,sorting,Php,Sorting,我正在使用下面的代码按用户名对用户列表进行排序,但我需要sortByName函数的帮助,因为我想按姓氏对列表进行排序,作为辅助项。因此,如果有两个Bob,它将按姓氏字母顺序排列,而不是随机排列。我试着在名字相同的时候添加一个if语句,但我最终以某种方式打破了它 function sortByName($a, $b) { // if($a['first'] == $b['first']) // commented out because it doesn't work //
function sortByName($a, $b) {
// if($a['first'] == $b['first']) // commented out because it doesn't work
// return $a['last'] > $b['last'];
// else
return $a['first'] > $b['first']; // this works on its own
}
$a = array( // of usernames // );
$userList = array();
foreach($a as $b) {
$id = $users->fetch_info('id', 'username', $b); // get users' id from their username
$userList[] = $users->userdata($id); // get users' information (like first and last name)
}
usort($userList, 'sortByName');
foreach($userList as $profile) {
$u = $profile['username'];
$first = $profile['first'];
$last = $profile['last'];
include 'user-list.php';
}
检查名字是否相似,然后回到姓氏
function sortByName($a, $b) {
if ($a["first"] === $b["first"]) { // 2 Bobs!
return strcmp($a["last"], $b["last"]);
}
return strcmp($a["first"], $b["first"]);
}
我使用了strcmp
,使用stracecmp
进行不区分大小写的排序,使用strnatcmp
进行自然顺序排序
自然顺序排序主要处理数字:“a200”
应该在“a3”
之后