【发布时间】:2017-03-31 10:42:32
【问题描述】:
对不起,如果这是重复的,我已经尝试查看以前的帖子,但可能我对 php 的有限理解妨碍了。
这适用于按数组 2 对数组 1 和 3 进行排序:
<?php
$ar[1] = array("game","scissors","rock","paper");
$ar[2] = array("D", "B", "A", "C");
$ar[3] =array("four","two","one","three");
array_multisort($ar[2],$ar[1],$ar[3]);
for ($j=0;$j<=3;$j++) {
for ($i=1;$i<=3;$i++) {
echo $ar[$i][$j]." ";
}
echo "\n";
}
?>
输出:
摇滚一个
剪刀 B 两
纸 C 三
游戏 D 四
很好。但我希望用作array_multisort() 参数的数组列表由用户输入指定,因此它不能是文字。相反,我希望程序根据用户输入来决定列表中数组的顺序,然后将结果数组命名为 $supar(超数组)。但是当使用 $supar 作为array_multisort() 的参数时,不会进行排序。
<?php
$ar[1] = array("game","scissors","rock","paper");
$ar[2] = array("D", "B", "A", "C");
$ar[3] =array("four","two","one","three");
$supar = array($ar[2],$ar[1],$ar[3]);
array_multisort($supar);
for ($j=0;$j<=3;$j++) {
for ($i=1;$i<=3;$i++) {
echo $ar[$i][$j]." ";
}
echo "\n";
}
?>
输出:
游戏 D 四
剪刀 B 两
摇滚一个
试卷 C 三
我应该如何让array_multisort()按指定的$ar数组对$supar中的数组进行排序?
感谢您的耐心等待。
【问题讨论】:
-
这是不可能的,这根本不是 array_multisort 的工作方式。如果你真的需要这个,你可以编写你自己的小包装函数,获取你的“超级数组”作为参数,然后调用 multisort 传递三个子数组作为单独的参数。
-
那很好,但问题是,事先并不清楚哪个数组是列表中的第一个,从而指导其他数组的排序。这将根据用户的输入而有所不同。那么在这种情况下,当我无法在括号内创建文字列表时,如何为 array_multisort 创建一个参数?是否有另一个功能可以解决问题?我的目标是生成一个带有列表的网页,该列表可以按用户选择的不同参数进行排序——这在网页中很常见......
-
谢谢@axiac。但也许我不知道如何使用这个功能。只需替换 array_multisort($supar);与 call_user_func_array('array_multisort', $supar);给出了相同的结果——没有排序(“游戏 D 四”等)。我错过了什么? ——
-
哎呀,你是对的。
array_multisort()通过引用获取其参数。
标签: php arrays array-multisort