1

我有 2 个数组 ($numbers$letters),我想创建一个新数组,该数组基于将 every$numbers与 every结合在一起的函数$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));

任何帮助将不胜感激!

4

2 回答 2

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

这是演示。

于 2012-10-08T03:33:52.257 回答
2

可能有很多方法可以解决这个问题,但为了可读性/可维护性,我会简单地使用几个循环:

$array = array();

foreach ($numbers as $number) {
    $row = array();

    foreach ($letters as $letter) {
        $row[] = myFunction($number, $letter);
    }

    $array[] = $row;
}
于 2012-10-08T02:12:43.327 回答