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 を介して foreach し、$n 番目の要素を新しい配列にプッシュしてから返します。それを行うためのネイティブな方法があれば、それはより良いでしょう。

4

2 に答える 2

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 に答える
1

正確にそれを行う関数はありませんが、ループを記述する代わりに配列関数を使用するいくつかの方法があります。例array_reduce*:

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

**array_mapはおそらくより良い選択であり、元のキーも保持されます。@zeldi の回答を参照*

于 2013-02-26T22:42:19.773 に答える