php - PHP 中有原生的多维、多类型排序吗?
问题描述
我正在努力在 PHP 中对多维、多类型数组进行排序。
通常我只使用sort
andrsort
等等ksort
。
这种情况似乎不需要任何更复杂的东西,但array_multisort
似乎不起作用(至少不是我使用它的方式)。
我的多维、多类型数组如下所示:
[
'Welsh_Harmony' => [
'Bread_Dip',
'Cloud_Patterns',
'Legendary_Sword',
'Legumes_In_The_Garden',
'Notice::Balloons',
'Notice::Corvid',
'Titanic',
'novemberMonth',
'Elephant_Graveyard'
],
'Oak' => [
'Keyboard'
]
]
并array_multisort
给了我这个(只对了一半):
[
'Oak' => [
'Keyboard'
],
'Welsh_Harmony' => [
'Bread_Dip',
'Cloud_Patterns',
'Legendary_Sword',
'Legumes_In_The_Garden',
'Notice::Balloons',
'Notice::Corvid',
'Titanic',
'novemberMonth',
'Elephant_Graveyard'
]
]
而我试图产生的结果(注意 的位置'Elephant_Graveyard'
)是:
[
'Oak' => [
'Keyboard'
],
'Welsh_Harmony' => [
'Bread_Dip',
'Cloud_Patterns',
'Elephant_Graveyard',
'Legendary_Sword',
'Legumes_In_The_Garden',
'Notice::Balloons',
'Notice::Corvid',
'Titanic',
'novemberMonth'
]
]
我曾尝试使用该标志SORT_STRING
并SORT_ASC
提示array_multisort
按字母顺序重新排序和重新索引二级数组,但这似乎也不起作用。
我很乐观,必须有一种方法来执行这种多维、多类型的排序,而无需编写自定义的递归函数。
解决方案
array_multisort() 可用于一次对多个数组进行排序,或按一维或多维对多维数组进行排序。
这基本上是您对数组的不同维度进行排序的方式:
$ar = array(
array("10", 11, 100, 100, "a"),
array( 1, 2, "2", 3, 1)
);
array_multisort($ar[0], SORT_ASC, SORT_STRING,
$ar[1], SORT_NUMERIC, SORT_DESC);
多排序接受可变参数。在这里阅读更多内容,请向下滚动并阅读评论。
或者您可以遍历数组的数组并一一排序。
foreach ($matrix as &$row) { sort($row); }
但是,我认为多排序会表现得更好。
推荐阅读
- reactjs - Firestore onSnapshot 更新并将数组添加到 DOM 而不是仅更新
- laravel - 如何在 Laravel 上更改集合结果中的字段名称
- unity3d - 单击屏幕时对象闪烁或消失并出现 - vuforia 增强现实
- ios - 如何检查用户是否已在 Swift 中为 App 购买中的自动续订订阅付费
- javascript - 根据 JavaScript 中的异步函数暂停整个脚本执行的正确方法是什么?
- r - 我有一个关于优化轮班安排(供应)以在 R 中尽可能满足每小时需求的问题
- python - 如何使用正则表达式在正确的位置拆分汉字?
- python - 所有 Python3 内置模块都与 asyncio 兼容吗?(蟒蛇3.7)
- android - 在另一个类 Recyclerlist 中发送回收站列表数据
- python - Python 是否有类似于 R 包预测中的 nnetar 的模型?