PHP:色々な配列

PHPの配列や連想配列について学習した内容をまとめています。

配列を使うことでたくさんのデータをまとめることが出来るようになり、より複雑な処理を実装できるようになります。

配列の基本

PHPには、値を複数まとめて記憶することのできる配列という機能があり、以下の特徴を持つ。

  • たくさんのデータをまとめることができる
  • キーと値の組み合わせになっている
  • 添字を使用して要素を指定し、値を代入する
    // 構文
    配列名[添字] = 値

目次へ

配列と連想配列

配列は、添字に0,1,2...と番号を振る。

    <?php
    // 配列
    $work01[0] = "hoge";
    $work01[1] = "fuga";
    $work01[2] = "hoga";
    print "{$work01[0]}<br>";
    print "{$work01[1]}<br>";
    print "{$work01[2]}<br>";
    //
    //結果
    // hoge
    // fuga
    // hoga
    //
    ?>

連想配列は、添字に名前をつける。

    <?php
    // 連想配列
    $work02["北海道"] = "hoge";
    $work02["東京都"] = "fuga";
    $work02["沖縄県"] = "hoga";
    print "{$work02["北海道"]}<br>";
    print "{$work02["東京都"]}<br>";
    print "{$work02["沖縄県"]}<br>";
    //
    //結果
    // hoge
    // fuga
    // hoga
    //
    ?>

目次へ

arrayで配列を作成

配列の要素が多くなった際に、添字を指定して値を代入するのは面倒なので、arrayを使用して配列を作成する。

    // 構文
    $配列名 = array(値1, 値2...)
    $配列名 = array("key1"=>値1, "key2"=>値2...)

配列と連想配列での処理を書き換えてみる。

    <?php
    // 配列
    $work01 = array("hoge", "fuga", "hoga");
    foreach ($work01 as $value) {
        print "{$value}<br>";
    }

    // 連想配列
    $work02 = array("北海道"=>"hoge", "東京都"=>"fuga", "沖縄県"=>"hoga");
    foreach ($work02 as $id => $value) {
        print "{$value}<br>";
    }
    //
    //結果
    // hoge
    // fuga
    // hoga
    // hoge
    // fuga
    // hoga
    //
    ?>

目次へ

配列の操作

要素数を得る

配列を操作する方法は色々とあるが、その中からいくつか記載しておく。

countを使用することで配列の要素数を取得することができる。

    // 構文
    count($配列名)

目次へ

配列のソート

昇順・降順・キー順に配列の値を並べ換えることができる。

    // 構文 昇順
    sort($配列名)
    // 構文 降順
    rsort($配列名)
    // 構文 キー順
    ksort($配列名)

昇順に並べ換える。

    <?php
    $work01 = array(7, 72, 84, 24, 99);
    sort($work01); // 並べ換え
    foreach ($work01 as $id => $value) {
        print "{$id} {$value}<br>";
    }
    //
    //結果
    // 0 7
    // 1 24
    // 2 72
    // 3 84
    // 4 99
    //
    ?>

降順に並べ換える。

    <?php
    $work02 = array(7, 72, 84, 24, 99);
    rsort($work02); // 並べ換え
    foreach ($work02 as $id => $value) {
        print "{$id} {$value}<br>";
    }
    //
    //結果
    // 0 99
    // 1 84
    // 2 72
    // 3 24
    // 4 7
    //
    ?>

キー順に並べ換える。

    <?php
    $work03 = array("さ"=>7, "た"=>72, "あ"=>84, "な"=>24, "か"=>99);
    ksort($work03); // 並べ換え
    foreach ($work03 as $id => $value) {
        print "{$id} {$value}<br>";
    }
    //
    //結果
    // あ 84
    // か 99
    // さ 7
    // た 72
    // な 24
    //
    ?>

目次へ

配列の結合

2つ以上の配列を結合することができる。

    // 構文
    array_merge($配列名1, $配列名2...)

2つの配列を結合してみる。

    <?php
    $work01 = array(1, 2);
    $work02 = array(3, 4);

    $work03 = array_merge($work01, $work02);
    foreach ($work03 as $id => $value) {
        print "{$id} {$value}<br>";
    }
    //
    //結果
    // 0 1
    // 1 2
    // 2 3
    // 3 4
    //
    ?>

目次へ

配列から変数へ

配列から変数へ分解することができる。

    // 構文
    extract($配列名, 処理方法, "プレフィックス")

    // 2, 3番目の引数は省略可能
    extract($配列名)

処理方法と内容

処理方法 内容
EXTR_OVERWRITE 重複があった場合は変数を上書き
EXTR_SKIP 重複があった場合は変数を上書きしない
EXTR_PREFIX_SAME 重複があった場合はプレフィックスをつけて新しい変数とする
EXTR_PREFIX_ALL 全ての変数にプレフィックスをつける
EXTR_PREFIX_INVALID 無効または数値の変数名のみにプレフィックスをつける

プレフィックスを指定すると、変数名は「指定した値_変数」となる。

    <?php
    $work01 = array("hoge", "fuga", "hoga");

    extract($work01, EXTR_PREFIX_ALL, "wk");
    print "{$wk_0}<br>";
    print "{$wk_1}<br>";
    print "{$wk_2}<br>";
    //
    //結果
    // hoge
    // fuga
    // hoga
    //
    ?>

目次へ

変数から配列へ

逆に、変数から配列へ変換することができる。

    // 構文
    $配列名 = compact($変数名1, $変数名2...)

変換してみる。

    <?php
    $work01 = "hoge";
    $work02 = "fuga";
    $work03 = "hoga";

    $work04 = compact("work01", "work02", "work03");
    foreach ($work04 as $id => $value) {
        print "{$id} {$value}<br>";
    }
    //
    //結果
    // work01 hoge
    // work02 fuga
    // work03 hoga
    //
    ?>

目次へ

配列の移動・追加

配列へのデータの追加・削除、またはデータの移動ができる。

処理と内容

処理 内容
array_push($配列名, 値, 値...) 配列の末尾に追加
array_pop($配列名) 配列の末尾から取り出し
array_unshift($配列名, 値, 値...) 配列の先頭に追加
array_shift($配列名) 配列の先頭から取り出し
unset($配列名) 配列、または指定した配列要素を削除
current($配列名) 現在の位置の値を得る
key($配列名) 現在の位置のキーを得る
each($配列名) 現在の位置の値を得て次に進む
next($配列名) 現在の位置を一つ進める
prev($配列名) 現在の位置を一つ前に戻す

目次へ

listで値を変数に入れる

配列の要素をまとめて変数に入れることができる。

    // 構文
    list($変数1, $変数2...) = $配列名

使用してみる。

    <?php
    $work01 = array("hoge", "fuga", "hoga");

    while (list($id, $value) = each($work01)) {
        print "{$id} {$value}<br>";
    }
    //
    //結果
    // 0 hoge
    // 1 fuga
    // 2 hoga
    //
    ?>

目次へ

多次元配列

配列の要素に配列がネストされている配列のこと。

    // 構文
    配列名[添字][添字] = 値

使用してみる。

    <?php
    $work01 = array(
        array("hoge", "朝", "おはよう"),
        array("fuga", "昼", "こんにちは"),
        array("hoga", "夜", "こんばんは"),
    );

    foreach ($work01 as $data) {
        foreach ($data as $value) {
            print "{$value}!";
        }
        print "<br>";
    }
    //
    //結果
    // hoge!朝!おはよう!
    // fuga!昼!こんにちは!
    // hoga!夜!こんばんは!
    //
    ?>

目次へ

作成日:2018/08/02
更新日:2018/08/16