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

PHP多维数组按weight排序且相同权重元素随机排序实现方法

解决方案

直接修改uasort的回调逻辑即可,保留原有按weight排序的规则,仅在权重值相等时返回随机比较结果,实现同权重元素随机排序的效果:

uasort($arr, function($a, $b) {
    // 原有的按weight升序排序逻辑
    $weightCmpResult = $a['weight'] <=> $b['weight'];
    if ($weightCmpResult !== 0) {
        return $weightCmpResult;
    }
    // 权重相同时返回随机比较结果,实现随机排序
    return mt_rand(-1, 1);
});

逻辑说明

  1. 原有排序逻辑完全保留,权重不同的元素仍然按weight值升序排列,不会破坏基础排序效果
  2. 权重相等时返回随机的-1、0或1,触发排序逻辑对同权重元素做随机位置调整
  3. 仍然使用uasort函数,不会丢失数组原有的自定义键名

如果对随机安全性有要求,可将mt_rand(-1, 1)替换为PHP7+支持的random_int(-1, 1),随机效果更稳定。

内容的提问来源于stack exchange,提问作者Александр Грешников

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 12:15:04