php - 按用户名字母顺序排列多个数组
问题描述
我为管理员创建了单独的数组:
$admins[] = array(
'username' => 'john',
'admin' => '1',
'level' => '1'
);
$admins[] = array(
'username' => 'adam',
'admin' => '1',
'level' => '1'
);
$admins[] = array(
'username' => 'ana',
'admin' => '1',
'level' => '2'
);
现在,我想在选择选项元素中显示所有用户名。但用户名应按字母顺序排列。我所做的是将所有管理数组组合成一个多维数组,然后创建一个函数来按用户名对数组进行排序。
$items = array();
foreach($admins as $username) {
$items[] = $username;
}
#echo "<pre>";
#print_r($items);
function sortByName($a, $b) {
return $a['username'] - $b['username'];
}
usort($items, 'sortByName');
之后,我尝试在选择选项元素中显示它。但是用户名没有排列。
<select name="support-name">
<option value="" required>select</option>
<?
foreach ($admins as $admin){?>
<option value="<?=$admin['username']?>"><?=ucwords($admin['username'])?></option>
<?}
?>
<?}
?>
</select>
解决方案
您可以使用strcmp()
strcmp() 函数比较两个字符串。它是二进制安全和区分大小写的。
例子 -
function sortByOrder($a, $b) {
return strcmp($a['username'], $b['username']);
}
尝试这个
$admins[] = array(
'username' => 'john',
'admin' => '1',
'level' => '1'
);
$admins[] = array(
'username' => 'adam',
'admin' => '1',
'level' => '1'
);
$admins[] = array(
'username' => 'ana',
'admin' => '1',
'level' => '2'
);
function sortByOrder($a, $b) {
return strcmp($a['username'], $b['username']);
}
usort($admins, 'sortByOrder');
表格代码
<select name="support-name">
<option value="" required>select</option>
<?
foreach ($admins as $admin){?>
<option value="<?=$admin['username']?>"><?=ucwords($admin['username'])?></option>
<?}
?>
</select>
推荐阅读
- jquery - 使用 jQuery 从 href 值中删除特定文本的正确方法
- python - 用户输入时如何从输出中排除“0”?
- mysql - 尝试调用 CTN 并将查询存储在变量中时出现“表不存在”错误
- ruby-on-rails - HAML Bootstrap 4 和 rails - 基于局部变量扩展手风琴
- c++ - 函数引用/初始化程序不起作用,它可能是什么?
- regex - MatchCollection 结果不一致
- javascript - 如何在不取回先前创建的 Elemnts 的情况下将新创建的 Li 添加到 Localstorage
- python - 如何从网站上抓取href,当它没有出现在结果对象中时?
- java - API 网关可以动态查找在服务注册表上注册的微服务的 URI 吗?
- html - Vertical align with bootstrap4 buttons as anchors