<code> 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 class="brush:php;toolbar:false">"; var_dump(combine_increase($arr, 0, $result, $num, $num, count($arr))); echo ""; echo "
This is a one-dimensional data generated by n one-dimensional arrays with different combinations of three elements. Normally, if it is not returned, just array_push($newarr, strToLeft(rand(0,$NUM-1),$tmp) ); the sentence becomes
<code> var_dump(strToLeft(rand(0,$NUM-1),$tmp)); echo("<br/>"); 则能列出几十条结果,但通过返回数组就只返回6个,好像是前6个,不知道如何能全部返回取到,求解!!!!</code>
<code> 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 class="brush:php;toolbar:false">"; var_dump(combine_increase($arr, 0, $result, $num, $num, count($arr))); echo ""; echo "
This is a one-dimensional data generated by n one-dimensional arrays with different combinations of three elements. Normally, if it is not returned, just array_push($newarr, strToLeft(rand(0,$NUM-1),$tmp) ); the sentence becomes
<code> var_dump(strToLeft(rand(0,$NUM-1),$tmp)); echo("<br/>"); 则能列出几十条结果,但通过返回数组就只返回6个,好像是前6个,不知道如何能全部返回取到,求解!!!!</code>
I don’t understand your question. You can’t find return in combine_increase, so why should return be null?
I understand the problem, but I don’t understand the code. There are too many parameters in a mess
If you just implement an array that returns different values, there is no need to go to such trouble
And the direct output strToLeft(rand(0,$NUM-1),$tmp)
results in six