我看到了这个函数(Get all permutations of a PHP array?),但我无法理解其中一些编码是如何工作的,可以帮助解释一下吗?顺便说一句,我是php新手。
这是代码:
function pc_permute($items, $perms = array())
{
if (empty($items))
{
echo join(' ', $perms) . "<br />";
}
else
{
for ($i = count($items) - 1; $i >= 0; --$i)
{
$newitems = $items;
$newperms = $perms;
list($foo) = array_splice($newitems, $i, 1);
array_unshift($newperms, $foo);
pc_permute($newitems, $newperms);
}
}
}
$arr = array('peter', 'paul', 'mary');
pc_permute($arr);
为什么要使用list($foo)
?我试图使用数组,它不起作用(我不明白列表)
为什么要使用array_unshift($newperms, $foo);
?为了什么?对不起,我是php T.T的新手
答案 0 :(得分:0)
List接受一个数组并将其放在变量中,如果数组大小为3,那么在list函数中你需要提到3个变量。
list($foo) = array_splice($newitems, $i, 1);
他所做的是将$i
放入$foo
并将其从数组中删除。
这看起来也像这样 -
$foo = array_splice($newitems, $i, 1)[0];
但有些人会认为这段代码更难阅读。
然后array_unshift($newperms, $foo)
表示取$foo
并将其放在$newperms
数组的开头。所以如果数组看起来像
Array ( [0] => a [1] => b [2] => c )
运行该函数后,和$foo
等于d
数组看起来像这样 -
Array ( [0] => d [1] => a [2] => b [3] => c )