PHPはどのように二次元配列の中のあるkeyの集合を取得しますか?


本文はコード共有のために、仕事中に「大牛」のコードを見て、共有します。具体的には、次の2次元配列がライブラリから読み取られます。コードリスト:
 
$user = array(
0 => array(
'id' => 1,
'name' => ' ',
'email' => '[email protected]',
),
1 => array(
'id' => 2,
'name' => ' ',
'email' => '[email protected]',
),
2 => array(
'id' => 5,
'name' => ' ',
'email' => '[email protected]',
),
......
);
上の配列のフォーマット、主にみんなはPHP+MYSQLを遊んだことがあって、きっととても熟知しました。では、インデックスの「id」の集合を取得し、1つの配列として保存する必要があります。つまり、array(1,2,5)を得ると、友達の皆さんはどう書きますか?以前の私の書き方ならそのままforeach、そしてarray_pushは一つ一つの配列変数に詰められます。これも実現できます。しかし、このような書き方は性能に影響を与えます。PHP原生の関数を使うと、循環効率よりも確実に高いです。コードリスト:
 
$ids = array();
$ids = array_map('array_shift', $user);
上記のコードで私達が欲しい結果が得られます。関数の使用についてはマニュアルを見たいです。実はこの中にはもう一つの案があります。array_を使います。column関数ですが、この関数はPHPバージョンの要求が必要です。(PHP 5>=5..0)コードリスト:
 
$ids = array();
$ids = array_column($user, 'id');
このようにすると、より効率が高くなります。2)索引「name」の集合を取得し、1つの配列として保存します。すなわち、array('張三'、'李四'、'王五')を得て、私の従来の書き方は同じforeachです。そして、array_pushは一つ一つの配列変数に詰められます。効率的なコードリストを見てください。コードリスト:
 
$names = array();
$names = array_reduce($user, create_function('$v,$w', '$v[$w["id"]]=$w["name"];return $v;'));
結果を得ました。
 
array(
1 => ' ',
2 => ' ',
5 => ' ',
);
いつもforeachの子供靴を修正してください。