以本机方式获取2D数组的所有子数组中的所有第n个位置元素

时间:2013-01-24 17:17:47

标签: php arrays

是否存在类似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元素推送到一个新的数组,然后返回。如果有一种本地方式,那就更好了。

2 个答案:

答案 0 :(得分:1)

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

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

结果是:

Array ( [0] => 2 [1] => 5 [2] => 8 ) 

答案 1 :(得分:1)

没有完全的功能,但有几种方法可以使用数组函数而不是编写循环。例如array_reduce *:

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

** array_map可能是更好的选择,它也保留了原始密钥。见answer by @zeldi *