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

如何根据自定义值对PHP数组按POSITION字段排序

按自定义职位顺序排序PHP数组

解决方案一:使用usort()自定义排序规则(支持重复职位)

这种方法适合数组中存在多个相同职位员工的场景,能保留所有元素并完成排序。

  1. 定义原始数组和自定义排序的优先级映射:
// 原始员工数组
$employees = [
    ["POSITION" => "Marketer", "FIRSTNAME" => "John1", "EMAIL" => "example1@mail.com"],
    ["POSITION" => "Designer", "FIRSTNAME" => "John2", "EMAIL" => "example2@mail.com"],
    ["POSITION" => "CEO", "FIRSTNAME" => "John3", "EMAIL" => "example3@mail.com"],
    ["POSITION" => "Developer", "FIRSTNAME" => "John4", "EMAIL" => "example4@mail.com"]
];

// 自定义职位优先级:数值越小,排序越靠前
$positionPriority = [
    'CEO' => 0,
    'Marketer' => 1,
    'Developer' => 2,
    'Designer' => 3
];
  1. 调用usort()执行排序:
usort($employees, function($a, $b) use ($positionPriority) {
    // 通过优先级数值的差值决定排序顺序
    return $positionPriority[$a['POSITION']] - $positionPriority[$b['POSITION']];
});

执行后,$employees会严格按照CEO → Marketer → Developer → Designer的顺序排列。


解决方案二:分组后按顺序重组(适合职位唯一的场景)

如果数组中每个职位仅对应一个员工,可以用更直观的分组重组方式:

// 按职位作为键,对员工数组分组
$groupedEmployees = array_column($employees, null, 'POSITION');

// 按自定义顺序遍历,组装排序后的数组
$sortedEmployees = [];
$targetOrder = ['CEO', 'Marketer', 'Developer', 'Designer'];
foreach ($targetOrder as $position) {
    if (isset($groupedEmployees[$position])) {
        $sortedEmployees[] = $groupedEmployees[$position];
    }
}

这种方法逻辑简单,但array_column会覆盖重复职位的元素,仅适用于职位唯一的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 20:25:11