PHP数组:将每个子数组连接在一起(概率) [英] PHP Array: join each sub-array together (Probability)
本文介绍了PHP数组:将每个子数组连接在一起(概率)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我只想找到更好的方法来做到这一点:
I want simply to find-out better way to do this:
$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
做同样的事情.
Then doing same for b
and c
.
foreach ($array[0] as $val1) {
foreach ($array[1] as $val2) {
foreach ($array[2] as $val3) {
echo "$val1 $val2 $val3 \n";
}
echo "--------\n";
}
}
我还试图动态创建上述代码,并使用eval执行它:
I also tried to create above code dynamically and execute it with 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
是动态的,它可能包含两个或更多个子数组
Note: the $array
is dynamic, It might contain two sub-array or more
推荐答案
这可以帮助您尝试这样
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), $elements, $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数组:将每个子数组连接在一起(概率)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文