2009-05-25 18:42

# 使用array_multisort对多维数组进行排序，您不知道数组的维数

I have a multi-dimensional array, which basically consists of one sub-array for each year. So, for example, if I had three year's worth of data, it might look like this:

``````\$data[0] = Array(0,1,2,3,4,5,6,7);
\$data[1] = Array(6,5,4,3,6,7,8,9);
\$data[2] = Array(1,4,2,5,7,3,1,4);
``````

Now I want to be able to sort those arrays on the basis of one of the years. E.g., I might want to sort based on the second year, in which case they'd all be sorted based on the re-ordering of \$data[1].

I can do this easily with array_multisort:

``````array_multisort(\$data[1],SORT_ASC,\$data[0],\$data[2]);
``````

That's fine, but I don't know how many years of data there will be. I want some way of specifying just the right number of arguments, but I don't know how to do that in php, unless I just have to have an if statement for each possible number of years, which seems incredibly painful:

``````if (\$num_years == 1)
{
array_multisort(\$data[\$which_year],SORT_ASC);
}
else if (\$num_years == 2)
{
array_multisort(\$data[\$which_year],SORT_ASC,\$data[0],\$data[1]); // this does work, interestingly, in spite of the repetition...
}
``````

Anyone know of a better way?

#### 图片转代码服务由CSDN问答提供 功能建议

``` ``` \$ data [0] = Array（0,1,2,3，  4,5,6,7）;
\$ data [1] =数组（6,5,4,3,6,7,8,9）;
\$ data [2] =数组（1,4，  2,5,7,3,1,4）;

现在我希望能够根据其中一年对这些数组进行排序。 例如，我可能想要根据第二年进行排序，在这种情况下，它们都会根据\$ data [1]的重新排序进行排序。

我可以这样做 使用array_multisort轻松：

array_multisort（\$ data [1]，SORT_ASC，\$ data [0]，\$ data [2]）;

没关系，但我不知道会有多少年的数据。 我想要一些方法来指定恰当数量的参数，但我不知道如何在php中这样做，除非我只需要为每个可能的年数都有一个if语句，这看起来非常痛苦：

if（\$ num_years == 1）
{
array_multisort（\$ data [\$ which_year]，SORT_ASC）;
}
else if（\$ num_years == 2）\  n {
array_multisort（\$ data [\$ which_year]，SORT_ASC，\$ data [0]，\$ data [1]）;  //有趣的是，这确实有效，尽管重复...
}

任何人都知道更好的方法吗？
<  / DIV>``````
` `
``` 写回答 好问题 提建议 关注问题 收藏 分享 邀请回答 ```
``` 1条回答 默认 最新 dongshi6710 2009-05-25 18:52 已采纳 You can always use call_user_func_array, specifying array_multisort as the first parameter and building an array of parameters to be passed to array_multisort. Something like: \$params = array(); foreach(\$data as \$year){ \$params[] = \$year; } call_user_func_array('array_multisort', \$params); 已采纳该答案 评论 解决 无用 打赏 分享 举报 报告相同问题？ 提交 关注问题 相关推荐 更多相似问题 使用array_multisort对多维数组进行排序，您不知道数组的维数 php 2009-05-25 18:42 回答 1 已采纳 You can always use call_user_func_array, specifying array_multisort as the first parameter and bui 按PHP中的值对多维关联数组进行排序 php 2017-06-27 20:06 回答 1 已采纳 The solution using uasort function: // \$arr is your initial array uasort(\$arr['day_1'], function( 如何在PHP中的几个不同的键上对多维数组进行排序？ php 2014-12-03 21:30 回答 2 已采纳 Are you sure the array_multisort doesn't work? array_multisort( \$pricing->d1d2, SORT_A php中array_multisort对多维数组排序的方法 2021-01-20 00:56 本文实例讲述了php中array_multisort对多维数组排序的方法。分享给大家供大家参考。具体实现方法如下： function sort_array(\$array, \$keyid, \$order='asc', \$type='number') { if(is_array(\$array)) { foreach(\$... PHP使用array_multisort对多个数组或多维数组进行排序 2020-12-18 06:48 PHP中array_multisort可以用来一次对多个数组进行排序，或者根据某一维或多维对多维数组进行排序。 关联（string）键名保持不变，但数字键名会被重新索引。 输入数组被当成一个表的列并以行来排序——这类似于 SQL ... php array_map array_multisort 高效处理多维数组排序 2021-01-20 00:30 对多维数组排序,通用的作法是1 获取利用排序的数据并且将其放入数组\$arrSort. 其中键索引为要排序数组的索引,保证唯一性 2 利用排序函数sort等对\$arrSort进行排序. 3 遍历\$arrSort, 根据其索引,获取多维数组的数据,...PHP自定义按日期字段排序多维数组 php 2015-07-26 01:57 回答 2 已采纳 It seems strtotime() doesn't parse this date format: 07-25-2015 19:39:13, which is confirmed by so php使用数字键排序多维数组 php 2017-09-17 16:15 回答 2 已采纳 How about iterating through the children elements, sorting them with ksort() as well: &lt;?php \$y PHP：按属性对多维数组进行排序 php 2011-11-04 19:36 回答 3 已采纳 A usort callback should return 3 types of values, depending on the circumstances: A negative num array_multisort实现PHP多维数组排序示例讲解 2020-12-17 23:51 array_multisort — 对多个数组或多维数组进行排序 说明 bool array_multisort ( array ar1 [, mixed arg [, mixed … [, array …]]] ) array_multisort (PHP 4, PHP 5) 如果成功则返回 TRUE，失败则返回 FALSE。... PHP array_multisort实现多维数组按多个值排序问题。 2018-11-13 16:14 涛的博客的博客 开发中常常用到数组到排序，比如查询出到...1.先实现指定多维数组一个字段排序 此处要求根据其中的一个字段来对数组进行排序，数组假设如下： \$array = array( 0=&gt;array('id'=&gt;8,'name'=&g... array_multisort 对多个数组或多维数组进行排序 2019-09-27 15:56 ignativs amor的博客 要排序的数组array array1_sort_order 之前 array 参数要排列的顺序。 SORT_ASC 按照上升顺序排序， SORT_DESC 按照下降顺序排序。此参数可以和 array1_sort_flags 互换，也可以完全删除，默认是 SORT_ASC ... 对具有索引的多维数组进行排序 php 2012-03-26 17:00 回答 2 已采纳 I'm glad you figured it out. Here's what I started writing before I got interrupted. Basic uasort php多维数组按键排序，但有异常 php 2017-10-04 17:56 回答 1 已采纳 You'll need to use usort for multiple sort criteria like this. For your usort comparison functio 按IP排序多维数组（SORT_NATURAL） php 2017-10-23 12:03 回答 2 已采纳 You don't have a key like \$ips['ipAddress']. That's why you are getting that warning. There's an e php关于array_multisort多维数组排序的使用说明 2020-12-18 10:14 array_multisort(\$arr1,\$arr2); print_r(\$arr1); // 得到的顺序是1,5,9 print_r(\$arr2); // 得到的顺序是6,4,2 我估计两个数组的值自始至终都是对应着的：1对应6，9对应2，5对应4。 我们再加多一个数组看看会怎样：... PHP使用array_multisort对二维数组进行排序 2018-03-27 21:12 marco__的博客 array_multisort(array&amp;\$array1 [,mixed \$array1_sort_order=SORT_...对多个数组或多维数组进行排序。\$array1要排序的数组，\$array_sort_order前面数组参数要排列的顺序，默认升序，\$array1_sort_flags为\$a... PHP array_multisort—对多个数组或多维数组进行排序 2017-03-09 13:10 Fay_Q的博客 PHP中array_multisort可以用来一次对多个数组进行排序，或者根据某一维或多维对多维数组进行排序。  关联（string）键名保持不变，但数字键名会被重新索引。  输入数组被当成一个表的列并以行来排序——这类似... 按数组值排序多维数组 mysqlphp 2016-09-18 07:39 回答 1 已采纳 Okay so after ages of searching other posts similar to mine and testing and modifying code I found PHP二维数组排序 array_multisort 2018-04-16 15:17 code301的博客 对2维数组或者多维数组排序是常见的问题，在PHP中我们有个专门的多维数组排序函数，下面简单介绍下：array_multisort(array1,sorting order, sorting type,array2,array3..） 是对多个数组或多维数组进行排序的函数... 没有解决我的问题, 去提问```
``` 点击登录 提问题 ◇ 欢迎建议意见◇ 回答问题能得到什么？◇ 如何写出高质量提问和回答？◇ 问答使用帮助文档◇ 问答公告 加急问题 ¥200 在调取美团联盟开放平台的poi时，出现问题要添加appkey白名单，要如何解决。 ¥200 被迫升级Windows11之后打游戏总是卡屏蓝屏 ¥200 win 10安装python库pycld3报错 ¥170 急! 面试题请教 - 创建数据库和查询 ¥100 如何实现手机远程控制手机 ¥100 神经网络信号调制类型识别2/4psk fsk ask ¥100 N2N配置supernode，运行一段时间后连接不上了 ¥100 转发视频部分成功部分失败 ¥100 怎么用paddleseg内置的cityscapes相关内容实现城市视频的图像分割 ¥100 电路板上的RTR JTAG ICE接口如何通过仿真器读写，芯片：ksz8995xa\ksz8695x ```
``` ```
``` window.csdn.sideToolbar = { options: { afterFinished: function () { setTimeout(function () { var helphtml = '<a class="option-box" data-type="help" href="https://ask.csdn.net/questions/7441224" target="_blank">'+'<img src="https://g.csdnimg.cn/side-toolbar/2.5/images/bangzhucopy.png" alt="" srcset="">'+ '<span class="show-txt">帮助</span></a>'; \$('.csdn-side-toolbar > a:last').before(helphtml); }, 300); }, contentEl: document.getElementsByClassName('floor')[0] } } ```