ホームページ >バックエンド開発 >PHPチュートリアル >縦線と横線を組み合わせたレコードセット超処理関数array_columnのバージョンアップ版を実装

縦線と横線を組み合わせたレコードセット超処理関数array_columnのバージョンアップ版を実装

WBOY
WBOYオリジナル
2016-07-25 08:48:351026ブラウズ
ハイライト: 簡略化された操作、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/
  1. //レコードセットの処理(php5.5に組み込まれています)
  2. static function array_column($data,$key='id',$column=null){
  3. $buffer=null;
  4. if ( $column) {
  5. //k=>v
  6. if (strpos($column,',') === false) {
  7. foreach ($data as $value) {
  8. $buffer[$value[$key] ]=$ value[$column];
  9. }
  10. return $buffer;
  11. }
  12. //k=arr
  13. $field=explode(',',$column);
  14. foreach ($data as $value) {
  15. $id= $value[$key];
  16. array_walk($value,function ($v,$k) use (&$value,$field){
  17. if (!in_array($k,$field)) unset($ value[$ k]);
  18. });
  19. $buffer[$id]=$value;
  20. }
  21. return $buffer;
  22. }
  23. //id_arr
  24. foreach ($data as $value) {
  25. $buffer[ ]=$ value[$key];
  26. }
  27. return $buffer;
  28. }
  29. //使用デモ:
  30. //元のレコードセット:
  31. $data=array(
  32. array('id'=>1 ,'名前 '=>'デュボックス','年齢'=>25,'ガールフレンド'=>'ソーダグリーン'),
  33. array('id'=>4,'名前'=>'シャオ春子',' 年齢'=>21,'ガールフレンド'=>'知らない'),
  34. array('id'=>9,'name'=>'馬鹿','年齢'= >71,'ガールフレンド '=>'未亡人'),
  35. );
  36. $ids=array_column($data,'id');
  37. //out: array(1,4,9);
  38. $ info=array_column($data ,'name','girlfriend');
  39. //out: array('dubox'=>'ソーダグリーン','小春子'=>'わかりません','馬鹿'=>'未亡人');
  40. $cache=array_column($data,'id','名前,年齢,彼女');
  41. //out: array(
  42. 1=>array('名前' =>'デュボックス','年齢' =>25,'ガールフレンド'=>'ソーダグリーン'),
  43. 4=>array('名前'=>'小春子','年齢'=> ;21,'ガールフレンド'=>'知らない'),
  44. 9=>array('名前'=>'バカ','年齢'=>71,'ガールフレンド'=>'未亡人') 、
  45. );
コードをコピー


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。