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)をカラムに設定してあるテーブルを考えます。

idnameage
test1Tanaka34
test2Sato55
test3Yamada26

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

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

tipLog

inkscape・GIMPを使ったデザインお勉強ブログ。WordPressなどのウェブ関連のお勉強もしています。2019年6月にInkscapeの書籍を出版しました。 現在は個人事業主向けのホームページやブログ導入のお手伝いをしています。

関連記事

特集記事

コメント

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

CAPTCHA


tipLog

tipLog

inkscape・GIMPを使ったデザインお勉強ブログ。WordPressなどのウェブ関連のお勉強もしています。2019年6月にInkscapeの書籍を出版しました。 現在は個人事業主向けのホームページやブログ導入のお手伝いをしています。

Inkscapeの入門書

ランキング

  1. inkscapeで取り込んだJPGやPNG画像をトリミングをする方法

  2. inkscapeで「フチ文字」を作る方法2つ+ちょっとした応用

  3. inkscapeの基本機能だけで矢印を描く方法

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

  5. 超簡単!inkscapeで直角三角形を作る方法

  6. inkscapeの使い方を集めたスキルアップのための日本語チュートリアル集

  7. inkscapeの「整列と配置」でオブジェクトを綺麗に並べて表を作る方法

inkscapeを学ぶ

TOP