function strToLeft($num,$arr){
$i = $arr[$num];
unset($arr[$num]);
array_push($arr,$i);
return $arr;
}
function combine_increase($arr, $start, $result, $count, $NUM, $arr_len,$newarr=array())
{
$i = 0;
for ($i = $start; $i < $arr_len + 1 - $count; $i++)
{
$result[$count - 1] = $i;
if ($count - 1 == 0)
{
$tmp=array();
for ($j = $NUM - 1; $j >= 0; $j--) {
array_push($tmp, $arr[$result[$j]]);
}
array_push($newarr, strToLeft(rand(0,$NUM-1),$tmp));
}
else {
return combine_increase($arr, $i + 1, $result, $count - 1, $NUM, $arr_len); }
}
return $newarr;
}
$arr = array('a1','b2','c3','d4','e5','x1','y1','z1');
$num = 3;
$result[$num]=array();
$newarr=array();
echo "('a1','b2','c3','d4','e5','x1','y1','z1')";//,'e5','x1'
echo "<br/>";
//combine_increase($arr, 0, $result, $num, $num, count($arr));
echo "<pre>";
var_dump(combine_increase($arr, 0, $result, $num, $num, count($arr)));
echo "</pre>";
echo "<br/>";
这是一个把一维数据生成按三个元素不同组合的n个一维数组,正常如果不是返回只是把array_push($newarr, strToLeft(rand(0,$NUM-1),$tmp));句变成
var_dump(strToLeft(rand(0,$NUM-1),$tmp));
echo("<br/>");
则能列出几十条结果,但通过返回数组就只返回6个,好像是前6个,不知道如何能全部返回取到,求解!!!!
并没有看懂你的问题,你的combine_increase里都找不到return,何谈return是null。
问题看懂了 但是代码没看懂 参数又乱又多
如果只是实现返回不同值的数组 没必要这么麻烦吧
而且直接输出
strToLeft(rand(0,$NUM-1),$tmp)
结果也是六个