脚本宝典收集整理的这篇文章主要介绍了PHP Array:将每个子数组连接在一起(概率),脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
$array = array( array('a','b','c'),array('e','f','g'),array('h','i','j','k','l') );
目标是打印这样的东西:
a e h a e i a e j a e k a e l a f h a f i a f j a f k a f l a g h a g i a g j a g k a g l
然后为b和c做同样的事情.
目前,我使用这个代码:
foreach ($array[0] as $val1) { foreach ($array[1] as $val2) { foreach ($array[2] as $val3) { echo "$val1 $val2 $val3 \n"; } echo "--------\n"; } }
我也试图动态地创建上面的代码,并用eval执行它:
$eval = ' $data =array(); '; $eval_blocks = ''; $eval_foreach = ''; $eval_data = ' $data[] = '; $looplength = count($array); for ($i = 0; $i < $looplength; $i++) { $eval_foreach .= ' foreach($array[' . $i . '] as $val' . ($i + 1) . '){ '; if (($i + 1) == $looplength) { $eval_data .= ' $val' . ($i + 1) . ';'; } else { $eval_data .= ' $val' . ($i + 1) . ' ." ".'; } $eval_blocks .= ' } '; } $eval = $eval . $eval_foreach . $eval_data . $eval_blocks; eval($eval); PRint_r($data);
但是,如果可能,我仍然希望找到更好的方法.
更新:
注意:$array是动态的,它可能包含两个子数组或更多
class test { // holds the combinations VAR $combinations= array(); function getCombinations($batch,$elements,$i) { if ($i >= count($elements)) { $this->combinations[] = $batch; } else { foreach ($elements[$i] as $element) { $this->getCombinations(array_merge($batch,$element),$i + 1); } } } }
//测试吧
$traits = array ( array( array('Happy'),array('Sad'),array('Angry'),array('HoPEful') ),array( array('Outgoing'),array('Introverted') ),array( array('Tall'),array('Short'),array('Medium') ),array( array('Violent'),array('Quiet'),array('Psychotic') ),array( array('Handsome'),array('Plain'),array('Ugly') ) ); $test = new test(); $start = array(); $test->getCombinations($start,$traITs,0); print_r($test->combinations);
以上是脚本宝典为你收集整理的PHP Array:将每个子数组连接在一起(概率)全部内容,希望文章能够帮你解决PHP Array:将每个子数组连接在一起(概率)所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。