我有2个数组($numbers
和$letters
),我想根据一个函数创建一个新数组,该函数将每个$numbers
与每个$letters
组合在一起。此函数的参数会增加$numbers
和$letters
的值。 (注意:$ numbers和$ letters的值不相同)。我需要这样的东西:
$numbers = array(1,2,3,4,5,6,...);
$letters = array('a','b','c','d','e',...);
function myFunction($x,$y){
// $output = some code that use $x and $y
return $output;
};
$array_1 = array( (myFunction($numbers[0],$letters[0])), (myFunction($numbers[0],$letters[1])), myFunction($numbers[0],$letters[2]), myFunction($numbers[0],$letters[3]), etc);
$array_2 = array( (myFunction($numbers[1],$letters[0])), (myFunction($numbers[1],$letters[1])), myFunction($numbers[1],$letters[2]), myFunction($numbers[1],$letters[3]), etc);
$array_3 = array( (myFunction($numbers[2],$letters[0])), (myFunction($numbers[2],$letters[1])), myFunction($numbers[2],$letters[2]), myFunction($numbers[2],$letters[3]), etc);
...
$array_N = array( (myFunction($numbers[N],$letters[0])), (myFunction($numbers[N],$letters[1])), myFunction($numbers[N],$letters[2]), myFunction($numbers[N],$letters[3]), etc);
$array = array($array_1, $array_2, $array_3, etc.);
我知道这可能有用,但是代码很多,特别是如果每个数组都有很多值。有没有办法用更少的代码获得相同的结果?我尝试了这个,但它不起作用:
$array = array_map("myFunction($value, $letters)",$numbers));
任何帮助都会得到满足!
答案 0 :(得分:6)
如果您想使用array_map
:
$numbers = array(1,2,3,4,5,6);
$letters = array('a','b','c','d','e');
$result = array_map(function($n) use ($letters) {
return array_map(function($l) use ($n) {
return myFunction($n, $l);
}, $letters);
}, $numbers);
的 Here is the demo. 强> 的
答案 1 :(得分:2)
可能有很多方法可以解决这个问题,但为了便于阅读/维护,我只想使用几个循环:
$array = array();
foreach ($numbers as $number) {
$row = array();
foreach ($letters as $letter) {
$row[] = myFunction($number, $letter);
}
$array[] = $row;
}