对不起,如果这是重复的,我已经尝试查看以前的文章,但也许我对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-2
第三卷
游戏D4
很好。但我希望用户输入指定用作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";
}
?>输出:
游戏D4
剪刀B-2
摇滚一首
第三卷
如何使array_multisort()按照指定的$supar数组对$supar中的数组进行排序?
感谢您的耐心。
发布于 2017-03-31 12:02:47
如果通过使用array_multisort()在数组中包含参数,则可以调用call_user_func_array() (或任何其他函数),而无需显式指定其参数。
array_multisort()通过引用获得它的参数(为了能够修改它们)。在构建用作call_user_func_array()参数的数组并将引用放入该数组时,您必须考虑这一点:
// Input arrays
$ar[1] = array("game", "scissors", "rock", "paper");
$ar[2] = array("D", "B", "A", "C");
$ar[3] = array("four", "two", "one", "three");
// Build the list of arguments for array_multisort()
// Use references to the arrays you want it to sort
$supar = array(&$ar[2], &$ar[1], &$ar[3]);
// Call array_multisort() indirectly
// This is the same as array_multisort($ar[2], $ar[1], $ar[3]);
call_user_func_array('array_multisort', $supar);在行动中检查它:https://3v4l.org/ptiog
发布于 2017-03-31 11:13:14
您不能只使用PHP函数来完成这个任务。array_multisort()将不同的数组分别作为参数,您不能只传递一个带有预期参数的不同的东西。
你能做的就是写你自己的函数来为你做这件事。类似于:
function my_multisort($supar) {
array_multisort($supar[2], $supar[1], $supar[3]);
}
$supar = array(
array("game","scissors","rock","paper"),
array("D", "B", "A", "C"),
array("four","two","one","three")
);
my_multisort($supar);编辑
正如@axiac正确指出的那样,这基本上是重新发明call_user_func_array()的一种奇怪的具体方法。您可以根据需要简单地构建参数数组$supar,然后执行
call_user_func_array('array_multisort', $supar);https://stackoverflow.com/questions/43138701
复制相似问题