ハイライト: 簡略化された操作、array_walk バッチ処理、参照、および低い内部消費量。
アプリケーションシナリオ: 主にレコードセット (2 次元配列) の処理に使用されます。 1. 結果セット (ID: [1,3,4,5]、勝利ユーザー名のリストなどの 1 次元配列) を統合します。 'Xiong Ming' ,'lijia','Erlangshen']) 2. 結合されたキーと値のペア (タグ: array('mysql'=>'url1','php'=>'url2 など) ']) 3. キャッシュ ファイル データ (id=>info)
注: PHP5.5 バージョンは組み込み関数です。使用する前に名前の競合に注意してください
(EQPHP ツール クラス): https:/ /github.com/eqphp/framework/ blob/master/www/class/fun.php
デモ作品: http://www.eqphp.com/blog/list/
- //レコードセットの処理(php5.5に組み込まれています)
- static function array_column($data,$key='id',$column=null){
-
- $buffer=null;
-
- if ( $column) {
- //k=>v
- if (strpos($column,',') === false) {
- foreach ($data as $value) {
- $buffer[$value[$key] ]=$ value[$column];
- }
- return $buffer;
- }
-
- //k=arr
- $field=explode(',',$column);
- foreach ($data as $value) {
- $id= $value[$key];
- array_walk($value,function ($v,$k) use (&$value,$field){
- if (!in_array($k,$field)) unset($ value[$ k]);
- });
- $buffer[$id]=$value;
- }
- return $buffer;
- }
-
- //id_arr
- foreach ($data as $value) {
- $buffer[ ]=$ value[$key];
- }
- return $buffer;
- }
-
-
-
- //使用デモ:
- //元のレコードセット:
- $data=array(
- array('id'=>1 ,'名前 '=>'デュボックス','年齢'=>25,'ガールフレンド'=>'ソーダグリーン'),
- array('id'=>4,'名前'=>'シャオ春子',' 年齢'=>21,'ガールフレンド'=>'知らない'),
- array('id'=>9,'name'=>'馬鹿','年齢'= >71,'ガールフレンド '=>'未亡人'),
- );
-
- $ids=array_column($data,'id');
- //out: array(1,4,9);
-
- $ info=array_column($data ,'name','girlfriend');
- //out: array('dubox'=>'ソーダグリーン','小春子'=>'わかりません','馬鹿'=>'未亡人');
-
- $cache=array_column($data,'id','名前,年齢,彼女');
- //out: array(
- 1=>array('名前' =>'デュボックス','年齢' =>25,'ガールフレンド'=>'ソーダグリーン'),
- 4=>array('名前'=>'小春子','年齢'=> ;21,'ガールフレンド'=>'知らない'),
- 9=>array('名前'=>'バカ','年齢'=>71,'ガールフレンド'=>'未亡人') 、
- );
コードをコピー
|