You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何基于指定排序数字对PHP多维数组进行排序?

按order number排序PHP多维数组的解决方案

嗨,你已经完成了数组合并和分块的步骤,接下来只需要用PHP的usort()函数实现自定义排序就能搞定啦!

完整代码示例

// 你已有的合并和分块代码
$arrMerge = array_merge($facebookURL, $twitterURL, $instagramURL, $linkedinURL, $pinterestURL);
$splitArr = array_chunk($arrMerge, 3);

// 核心排序逻辑:按每个子数组的第三个元素(order number)升序排序
usort($splitArr, function($a, $b) {
    // 将字符串类型的order转为整数,避免字符串比较的坑
    $orderA = (int)$a[2];
    $orderB = (int)$b[2];

    // 比较逻辑:升序排列
    if ($orderA === $orderB) {
        return 0;
    }
    return $orderA < $orderB ? -1 : 1;
});

// 验证排序结果
print_r($splitArr);

代码解释

  • usort()函数:PHP内置的自定义排序函数,它会根据你传入的回调函数逻辑对数组进行排序,排序会直接修改原数组。
  • 类型转换:把$a[2]$b[2]转为整数是关键,因为你的order number是字符串类型,如果直接做字符串比较,会出现类似'10' < '2'的错误结果(字符串比较是按字符逐个对比的)。
  • 排序方向:上面的代码是升序排序(order从1到9),如果需要降序,只需要把回调的返回值反转:
    return $orderA > $orderB ? -1 : 1;
    

排序后的数组会按照order number从小到大排列,最终顺序应该是:pinterest(1) → linkedin(2) → facebook(4) → twitter(7) → instagram(9)。

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

火山引擎 最新活动