You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP:如何对关联用户ID的用户数组进行正确排序?

解决数组排序后ID与用户名不匹配的问题

嘿,我完全懂你的困扰——单独对$user_names排序后,原本一一对应的用户ID和名字就“分家”了,自然没法正确输出配对的信息。这里有两种实用的解决办法,帮你搞定这个问题:

方法一:合并成多维数组(推荐)

把用户名和对应的ID绑定到同一个数组元素里,这样排序的时候整个用户的信息会一起移动,就不会错位了。代码示例:

// 你的原始数组
$user_names = array('John', 'Peter', 'Anna');
$user_ids = array(67, 68, 73);

// 合并成包含用户信息的多维数组
$users = [];
foreach ($user_names as $idx => $name) {
    $users[] = [
        'name' => $name,
        'id' => $user_ids[$idx]
    ];
}

// 按照用户名排序(大小写不敏感的话可以用strcasecmp)
usort($users, function($a, $b) {
    return strcmp($a['name'], $b['name']);
});

// 输出配对结果
foreach ($users as $user) {
    echo "User: {$user['name']} with id: {$user['id']}\n";
}

这种方式的好处是,后续如果要添加更多用户属性(比如邮箱、年龄),直接扩展多维数组就行,代码的可维护性更高。

方法二:用array_multisort同步排序

PHP内置的array_multisort函数可以实现“根据一个数组的排序结果,同步调整其他数组的元素位置”,完美适配你的场景:

// 你的原始数组
$user_names = array('John', 'Peter', 'Anna');
$user_ids = array(67, 68, 73);

// 同步排序:先排名字数组,ID数组跟着调整位置
array_multisort($user_names, SORT_ASC, $user_ids);

// 现在输出就完全对应了
foreach ($user_names as $idx => $name) {
    echo "User: {$name} with id: {$user_ids[$idx]}\n";
}

这个方法更简洁,适合只需要处理两个关联数组的简单场景。

不管选哪种方法,都能让你轻松输出正确的“用户名+ID”配对信息啦!

内容的提问来源于stack exchange,提问作者Martin Zeltin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:35:55