array_map应用于具有2个参数的函数

时间:2012-10-08 01:51:39

标签: php arrays

我有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));

任何帮助都会得到满足!

2 个答案:

答案 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;
}