如何基于指定排序数字对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




