我正在尝试编写一个执行以下操作的函数: 让我们说我有一个阵列:
$data = array(
array('10','15','20','25'),
array('Blue','Red','Green'),
array('XL','XS')
)
我的结果数组应该是:
$result = array(
array('10','15','20','25'),
array('Blue','Red','Green','Blue','Red','Green','Blue','Red','Green','Blue','Red','Green')
array('XL','XS','XL','XS','XL','XS','XL','XS','XL','XS','XL','XS','XL','XS','XL','XS','XL','XS','XL','XS','XL','XS','XL','XS','XL','XS','XL','XS','XL','XS','XL','XS','XL','XS','XL','XS','XL','XS','XL','XS','XL','XS','XL','XS','XL','XS','XL','XS')
)
我坚持这个因为我想要一个能够做到这一点的函数,无论第一个数组中有多少数组$data
我只能写这个,这就是给$result
数组的原因:
foreach($data[2] as $value2){
$result[2][] = $value2;
foreach($data[1] as $value1){
$result[1][] = $value1;
foreach($data[0] as $value0){
$result[0][] = $value0;
}
}
}
经过一些研究后,似乎递归函数是动态生成foreach
的方法,但我无法使其工作。
感谢您的帮助。
答案 0 :(得分:0)
答案 1 :(得分:0)
这是动态的:
$result[] = array_shift($data);
foreach($data as $value) {
$result[] = call_user_func_array('array_merge',
array_fill(0, count($result[0]), $value));
}
如果不需要修改原件,请使用以下方法:
$result[] = reset($data);
while($value = next($data)) {
$result[] = call_user_func_array('array_merge',
array_fill(0, count($result[0]), $value));
}