php array_multisort 使用数组名作为参数
php array_multisort use array name as argument
抱歉,如果这是重复的,我已经尝试查看以前的帖子,但也许我对 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 (superarray)。但是当使用 $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中的数组进行排序?
感谢您的耐心等待。
仅使用 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);
如果使用 call_user_func_array()
.
在数组中包含参数,则可以调用 array_multisort()
(或任何其他函数)而无需显式指定其参数
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);
抱歉,如果这是重复的,我已经尝试查看以前的帖子,但也许我对 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 (superarray)。但是当使用 $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中的数组进行排序?
感谢您的耐心等待。
仅使用 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);
如果使用 call_user_func_array()
.
array_multisort()
(或任何其他函数)而无需显式指定其参数
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);