この記事はコード共有用です。作業中に「大きな」コードを見つけたので共有したいと思います。
具体的には、以下の二次元配列をライブラリから読み込みます。
コードリスト:
- $user = array(
- 0 => 配列(
withで
E'名前'= & gt; '張三'、-
」
)、-
1 => 配列( ;
;
- 'name' =>
)、
2 =>
配列( -
with
E'名前'= & gt; '王五'、
-
️ =>
)、-
…
);
-
上記の配列形式は、主に PHP+MYSQL を使ったことがある人なら誰でもよく知っているものです。
-
それで、次の 2 つの要件があります:
1) インデックス「id」のコレクションを取得し、それを 1 ビット配列として保存します。つまり、get array(1,2,5)
-
- 友達ならどう書くか分かりません?
以前の書き方であれば、foreachを直接使用し、array_pushを使用して配列変数に1つずつ詰めるでしょう。これも実現可能です。ただし、PHP のネイティブ関数を使用する方がループよりも確実に効率的であるため、この書き方はパフォーマンスに影響します。
- コードリスト:
-
[php] プレーンに表示
- コピー
-
-
-
$ids =
array();
$ids =
array_map('array_shift',
$user);
上記のコードは私たちが望む結果を得ることができます。関数の使用方法についてはマニュアルを参照してください。
実際、ここには array_column 関数を使用する別の解決策がありますが、この関数には PHP バージョン要件 (PHP 5 >= 5.5.0) が必要です
コードリスト:
-
$ids = array();
$ids = array_column(
$user, - 'id');
この場合、効率は間違いなく高くなります。
2)
インデックス「name」のセットを取得し、それを 1 ビット配列として保存します。つまり、get array('Zhang San','Li Si','Wang Wu')
以前の書き方によると、foreachはそのままで、array_pushで配列変数に一つずつ詰め込んでいきます。効率的なコードのリストを参照してください。
コードリスト:
[php]
プレーンに表示
コピー
array_reduce(
$user, create_function(- '$v,$w', '$v[$w["id"]]=$w["name"];return $v;' ));
結果を取得: -
[php] プレーンに表示
コピー
- );
-
頻繁に修理される子供用の靴は、できるだけ早く直してください。
この記事はCSDNからのものです。転載する場合は出典を明記してください。 http://blog.csdn.net/liruxing1715/article/details/22925575