首页 > 解决方案 > 按用户名字母顺序排列多个数组

问题描述

我为管理员创建了单独的数组:

$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>

标签: phparrays

解决方案


您可以使用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>

推荐阅读