1

是否有像combine_subarrays下面这样工作的本机功能?

$foo = array(
   array(1,2,3),
   array(4,5,6),
   array(7,8,9)
);

$n = 1;   // desired element's position in each subarray 
$bar = combine_subarrays($foo, $n);

// Result: $bar is array of all elements in 1st positions - [2,5,8]

现在,我遍历 $foo 并将 $nth 元素推送到一个新数组上,然后返回该数组。如果有本地方法可以做到这一点,那就更好了。

4

2 回答 2

1

没有函数可以完全做到这一点,但有几种方法可以使用数组函数而不是编写循环。例如array_reduce*:

$bar = array_reduce($foo, function(&$result, $item) use ($n) {
    $result[] = $item[$n]
});

**array_map可能是更好的选择,它还保留了原始密钥。查看@zeldi的回答*

于 2013-02-26T22:42:19.773 回答
1

全局引用 $n 的快速解决方案是:

$n = 1;
$bar = array_map(function($item) { 
        global $n; 
        return $item[$n]; 
    }, 
    $foo);

结果是:

Array ( [0] => 2 [1] => 5 [2] => 8 ) 
于 2013-02-26T22:34:42.190 回答