PHPの配列や連想配列に値を追加や結合、削除する操作方法

変数が名前をつけた箱で例えるなら、配列はその箱に仕切りをつけたようなものです。

例えば都道府県一覧などをプログラムで扱う場合、配列にして1つの変数で管理することが出来ます。

PHPの配列は1つ1つの配列内の要素に名前をつけて管理ができたり非常に便利です。

PHPでプログラミングをするなら必ず使うことになるので覚えておきましょう。

目次

PHPの配列の宣言

$ary = array();
$ary = [];

配列の宣言は上のように書きます。

上の二つのうちどちらのパターンを使っても同じです。

 

中身のある配列は次のように宣言します。

$ary = array("東京", "大阪", "名古屋");
$ary = ["東京", "大阪", "名古屋"];

要素1つ1つをカンマで区切って記載します。

print_r で出力すると下のようになります。

Array
(
    [0] => 東京
    [1] => 大阪
    [2] => 名古屋
)

 

キーのある配列は次のように宣言します。

$ary = array("tokyo" => "東京", "osaka" => "大阪", "nagoya" => "名古屋");
$ary = ["tokyo" => "東京", "osaka" => "大阪", "nagoya" => "名古屋"];

1つの要素を キー => 値 のように矢印みたいに書いて関連付けます。

print_r で出力すると次のようになります。

Array
(
    [tokyo] => 東京
    [osaka] => 大阪
    [nagoya] => 名古屋
)

配列に要素を追加する

通常の追加方法

$ary = array("東京", "大阪", "名古屋");
$ary[] = "福岡";

配列に要素を追加するには、配列の変数名の後ろに [] をつけて = の右辺の値を追加します。

上の例だと 東京、大阪、名古屋 の後ろに 福岡 が追加されます。

Array
(
    [0] => 東京
    [1] => 大阪
    [2] => 名古屋
    [3] => 福岡
)

インデックスを指定して追加・上書き

インデックスを指定すると最後尾に追加するのではなく、既存のものに上書き出来ます。

$ary = array("東京", "大阪", "名古屋");
$ary[1] = "福岡";
Array
(
    [0] => 東京
    [1] => 福岡
    [2] => 名古屋
)

 

まだ何も指定されていないインデックスを指定した場合はそのインデックスで追加されます。

$ary = array("東京", "大阪", "名古屋");
$ary[99] = "福岡";
Array
(
    [0] => 東京
    [1] => 大阪
    [2] => 名古屋
    [99] => 福岡
)

キー付きの配列を追加

キー付きの配列の場合は最後尾に追加するという考えでは無いので普通にキー付きで追加します。

追加の仕方は次の通りです。

$ary = array("tokyo" => "東京", "osaka" => "大阪", "nagoya" => "名古屋");
$ary["fukuoka"] = "福岡";
Array
(
    [tokyo] => 東京
    [osaka] => 大阪
    [nagoya] => 名古屋
    [fukuoka] => 福岡
)

配列の結合(マージ)

上記以外に複数の配列を合体させる方法もあります。

$ary = array("tokyo" => "東京", "osaka" => "大阪", "nagoya" => "名古屋");
$ary2 =array("fukuoka" => "福岡", "hokkaido" => "北海道");
$ary3 =array("chiba" => "千葉", "kanagawa" => "神奈川");
$arymerge = array_merge($ary, $ary2, $ary3);
Array
(
    [tokyo] => 東京
    [osaka] => 大阪
    [nagoya] => 名古屋
    [fukuoka] => 福岡
    [hokkaido] => 北海道
    [chiba] => 千葉
    [kanagawa] => 神奈川
)

配列の要素を削除する

配列の要素を削除する機会は少ないかと思いますが、削除する場合には unset() という関数があります。

$ary = array("東京", "大阪", "名古屋");
unset($ary[1]);
Array
(
    [0] => 東京
    [2] => 名古屋
)

上の結果を見た通り、キーがインデックスの配列の場合削除するとインデックスの順番がずれてしまいます。

インデックスがずれてもそれほど問題にはならないかなと僕は思いますが、一応ずれたインデックスを振りなおす方法を紹介します。

$ary = array("東京", "大阪", "名古屋");
unset($ary[1]);
$ary = array_values($ary);

このように array_values() を使うとインデックスが整理された配列を受け取ることが出来ます。

 

キー指定の配列ならば順番は関係ないため unset() だけでも問題ないです。

配列かどうかの判定

変数 $var があったとき、その変数が配列かどうかを判定する関数です。

判定には is_array() を使います。

if (is_array($var)) {
  // 配列の場合
} else {
  // 配列でない場合
}

引数に変数を入れると判定してくれます。

戻り値は、配列ならば true で、配列で無いなら false になります。

配列にキーがセットされているかの判定

配列にキーがセットされているかどうかのチェックは array_key_exists() を使います。

第一引数に探すキーの文字列を指定し、第二引数に検索対象の配列を入れます。

$ary = array("tokyo" => "東京", "osaka" => "大阪", "nagoya" => "名古屋");
$key = "tokyo";
var_dump(array_key_exists($key, $ary));

結果は boolean 型で返ってきます。

 

他にも isset() も使えます。

$ary = array("tokyo" => "東京", "osaka" => "大阪", "nagoya" => "名古屋");
var_dump(isset($ary['tokyo']));

isset() の場合はキーが存在しない場合には false ですが、存在していても値が null の場合には false になります。

キーが存在する キーが存在しない
値がnull false false
値がnullでない true false

 

isset() の場合は null 判定もしますが、空文字の場合は true になります。

empty() だと値が空文字もしくは0の場合も判定します。

ただし、「存在するか」というチェックではなく「空かどうか」というチェックになります。

なので結果は値が無い場合に true になります。

$ary = array("tokyo" => "東京", "osaka" => "", "nagoya" => 0, "fukuoka" => 1);
var_dump(empty($ary['tokyo'])); // true
var_dump(empty($ary['osaka'])); // false
var_dump(empty($ary['nagoya'])); // true
var_dump(empty($ary['fukuoka'])); // false

上のサンプルを流用して、

キーが存在する キーが存在しない
値が “東京” false true
値が 空文字 true true
値が 1 false true
値が 0 true true

※値が “東京” の場合は”東京”以外でもいいです。当たり前ですが。

配列自体が空かどうかの判定

配列自体の中身があるか無いかも empty() を使います。

$ary = array();
var_dump(empty($ary));

これで配列の中身が無ければ true になります。

まとめ

配列の操作について僕がよく使うものをまとめました。

他にやりたいことがあればご質問ください。

この記事を書いた人

ライターのプロフィールが入ります。このライター情報を入れたくない場合は管理画面の ユーザー > あなたのプロフィールの「プロフィール情報」を未入力にすれば表示されません。逆に「プロフィール情報」を入力することでライター情報を表示できます。

コメント

コメントする

CAPTCHA


目次
閉じる