ウェブコーディング

PHPでデータベースから取得した配列を加工する方法

データベースからデータをfetch関数などで取得すると、大体は2次元配列の構造になっています。

この2次元配列の構造から特定データを利用するときに意外と苦戦するので、まとめ書きをしておこうと思います。

データベースから得られる配列の構造

PHPでデータベース操作をする場合に一番多く使われているのはPDOクラスの汎用データベース関数群だと思います。

PDOクラスを利用してデータベースからデータを取得するには、SQL文のSELECT構文を作り、PDOクラスのqueryメソッドを使います。

// SQLiteデータベースからデータを取得
// 初期設定
$dsn = 'sqlite:test.db';
$username = '';
$password = '';
$options = array();

//データベースに接続
$db = new PDO($dsn, $username, $password, $options);

//実行するqueryの作成(testテーブルの全データを取得)
$query = "SELECT * FROM 'test'";

//クエリを実行
$res = $db->query($query);

//取得したデータを全てフェッチする
$data = $res->fetchAll();

//データを表示する
print_r($data);

最後のprint_rで配列の全てのデータを表示することができます。

例えば、会員ID(id)、名前(name)、年齢(age)をカラムに設定してあるテーブルを考えます。

id name age
test1 Tanaka 34
test2 Sato 55
test3 Yamada 26

このテーブルのデータを上記のコードで取得すると次のように表示されます。

Array
(
    [0] => Array
        (
            [id] => test1
            [0] => test1
            [name] => Tanaka
            [1] => Tanaka
            [age] => 34
            [2] => 34
        )

    [1] => Array
        (
            [id] => test2
            [0] => test2
            [name] => Sato
            [1] => Sato
            [age] => 55
            [2] => 55
        )

    [2] => Array
        (
            [id] => test3
            [0] => test3
            [name] => Yamada
            [1] => Yamada
            [age] => 26
            [2] => 26
        )

)

1行目のデータが配列の第1要素として取得され、その中に連想配列と添字配列の形式でそれぞれのデータが格納されます。

この配列構造を2次元配列と言います。

データベースから取得したデータをカラムごとに整理する方法

通常はデータベースから取得したデータはテーブルの行ごとに処理されることが多いのですが、テーブルのカラムごとに処理したいという場合もあります。

先ほどのテーブルで言うと、例えばidのカラムだけを取り出して配列操作を行いたい場合です。

id
test1
test2
test3

こういう場合にはarray_columnを使います。

array_columnは多次元配列の中の要素から特定のキーに該当するデータを配列として取り出す関数です。

array_column ( array $array , $column_key [, $index_key = null ] )

$array はカラムを取り出す元の配列を指定します。

$column_key は取り出したいカラムの名称(キー)を文字列で指定します。

$index_key は取り出しの際に並べ替えを行うオプションです。必要がなければ指定する必要はありません。

これを使って先ほどデータベースから取り出した$dataのidだけを抽出するには次のようにします。

// $data からidに該当するカラムのみを取り出す
$id = array_column($data, 'id');

// 取り出したカラムの配列を表示
print_r($id);

次のように表示されます。

Array (
    [0] => test1
    [1] => test2
    [2] => test3
)

idだけを抽出して配列として作りなおすことができました。

ここからは通常の配列として操作すれば希望通りの処理を行うことができます。

 

私の場合はwebアプリケーションの設定情報の操作に利用しています。

array_columnの詳細は公式ページを参照して下さい。

⇒ http://php.net/manual/ja/function.array-column.php

記事が気に入ったら
tipLog を "いいね!"
Facebookで更新情報をお届け。

tipLog

WordPressテーマ

WordPressテーマ「MAG(TCD036)」

スポンサードリンク

関連記事

  1. ウェブコーディング

    PHPで配列と文字列の変換をデータベースに応用する方法

    データベース検索などを利用するときに、$_POSTや$_GETで受け取…

  2. ウェブコーディング

    WEB言語を手を動かして1から学べるサイト

    HTML・CSS・PHPなどのウェブ系の言語をどれくらい理解しているで…

  3. グラフィックデザイン

    inkscapeで「冷えてます。」POPをつくってみたのでデータ配布します

    ちょっと仕事で使うことになったので試しにPOP作成をinkscapeで…

  4. グラフィックデザイン

    アイコンの基本は抽象化!特徴を見つけて基本図形に落としこむ方法

    作りたいアイコンやロゴがあるときに、なかなかアイデアが浮かばないという…

  5. タイポグラフィ

    inkscapeのパス操作でテキストをポップにする方法

    特別なフォントを使わなくても、パス操作を使うことでポップな書体を作るこ…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

CAPTCHA


スポンサードリンク

ピックアップ記事

おすすめの本

使用している素材

カテゴリー

 
  1. ブログ収益化

    無料レポートスタンドの「メルぞう・Xam」を120%使い倒す方法
  2. 素材

    無料でクオリティが高く、検索機能が利用できる画像素材サイト3選
  3. グラフィックデザイン

    自作?外注?その前にコレ!ブログのロゴデザインをするなら「Logaster」を使…
  4. ブログ収益化

    月額100円から使える「ロリポップレンタルサーバー」
  5. ブログ収益化

    脱初心者しませんか?Amazon・楽天のアフィリエイトを上手に活用するための予備…
PAGE TOP