PHP 配列

配列

配列の作成

$配列名 = array(値1,値2,...);

$配列名 = [値1, 値2,...];

配列の呼び出し

$配列名[インデックス番号];

配列の値を変更

$配列名[値を変更するインデックス番号] = 新しい値;

配列の中身を確認

var_dump($配列名);
//要素数,値の型,インデックス番号(キー),値を表示
print_r($配列名);
//インデックス番号(キー)と値を表示

連想配列

連想配列を作成

$配列名 = array(キー1 => 値1, キー2 => 値2,...);

$配列名 = ['キー1' => 値1, 'キー2' => 値2,...];
  • 取り出し方は配列と同じ

よく使う関数

関数名 説明
count(配列名) 素数を調べる
sort(配列名) 値を昇順に並び替え(キーは0から振り直される)
asort(配列名) 値を昇順に並び替え(キーはそのまま)
ksort(配列名) キーを昇順に並び替え
rsort(配列名) 値を降順に並び替え(キーは0から振り直し)
arsort(配列名) 値を降順に並び替え(キーはそのまま)
krsort(配列名) キーを降順に並び替え
shuffle(配列名) 値をランダムに並び替える(キーは0から振り直し)
array_push(配列,値) 末尾に値を追加
array_pop(配列名) 末尾から1つ値を取り出す(削除する)
array_unshift(配列名,値) 先頭に値を追加(キーは0から振り直し)
array_shift(配列名) 先頭から1つ値を取り出す(削除する(キーは0から振り直し))
array_value_count(配列名) 同じキーの要素数を数える
in_array(値,配列名) 配列に指定した値が含まれているか
array_key_exists(キー,配列名) 配列に指定したキーが含まれているか
array_search(値,配列名) 配列に指定した値があるときキーを返す
implode(区切り文字,配列名) 配列内の文字列を指定した区切り文字で1つの文字列に連結する
explode(区切り文字, 文字列) 指定した区切り文字で区切って配列の要素に格納する
array_rand($配列名, 個数) 配列から指定した個数分のインデックス番号をランダムに返す
array_fill(開始位置のインデックス番号, 個数, 値) インデックス番号から個数分を指定した値で埋める
range(開始数値, 終了数値, 刻む数) 指定した数から順番に要素として値を入れていく(刻む数が1ずつの場合は省略可能)
array_sum($配列名) 配列の要素の合計値を返す
max($配列名) 配列の最大値を返す
min($配列名) 配列の最小値を返す
count($配列名) 配列の要素数
array_slice(配列名, 開始位置のインデックス番号, 個数) 配列から指定した要素をコピーして別の配列として作成して返す(引数の個数は省略すると最後までの指定になる/インデックス番号を「-」にすると末尾から-1,-2と数える)
array_splice(配列名, 開始位置のインデックス番号, 個数, 追加する要素) 指定した要素を削除してそこに指定した要素を追加

array_splice

//指定した要素を削除
array_splice($配列名, インデックス番号, 個数);

//指定した要素を削除してそこに要素を追加
array_splice($配列名, インデックス番号, 個数, 追加する要素);//追加する要素は配列で複数追加することも可能[数値, 数値,...]

//削除はせずに要素の追加のみ
array_splice($配列名, 開始位置のインデックス番号, 0, 追加する要素)

2つの配列を操作/配列から新しく配列を作成

関数 説明
array_keys($配列名) キーのみ返して配列を作成
array_values($配列名) 値のみ返して配列を作成
array_merge($配列名1, $配列名2) 配列1の後に配列2を連結した新しい配列を作成$配列名 = [...$配列名1, ...$配列名2]でも可
array_unique($配列名) 重複データを取り除いた新しい配列を作成
array_diff($配列名1, $配列名2) 配列名1から配列名2にある要素を引く
array_intersect($配列名1, $配列名2) 共通の要素だけの配列を作成
array_map($関数名, $配列名) 関数を全ての要素に適用した結果を新しい配列として作成
array_fillter($配列名, $関数) 要素にtrueかfalseを返す関数を適用しtrueだった要素のみで新しい配列を作成する

特殊なsort

usort

usort(
    $配列名,
    //要素を並び替えるとき、二つの値をどう比較するかを定義
    function ($a, $b) {
        //二つの値が同じで、順番を変えたくないとき0
        if ($a['比較する値のキー'] === $b['比較する値のキー']) {
            return 0;
        }
        //$a['キー']が$b['キー']より大きいという並び替え
        return $a['キー'] > $b['キー'] ? 1 : -1;
    }
);

DBのデータのような配列の中に複数の配列がある場合のソート

関数 説明
array_multisort($配列1, $配列2, $新配列) 配列1が同じ値の時、配列2を比較。結果を新しい配列として作成

array_multisort

デフォルト時は小さい順、アルファベット順のため逆を指定するには

array_multisort(
    //大きい順で数値と指定
    $配列1, SORT_DESC, SORT_NUMERIC,
    //アルファベットの逆順で文字列と指定
    $配列2, SORT_DESC, SORT_STRING,
    $新配列
);
関数 説明
reset() 配列内のポインタを先頭の要素にする
current() 配列内の現在の要素を返す
key() 連想配列のキーを返す
next() 次の配列要素を返す

配列の要素を全て取り出す

foreach ($配列名 as $変数名){
    処理内容
}

//キーも取得
foreach ($配列名 as $キー用の変数名 => $要素用の変数名){
    処理内容
}
  • 全ての配列要素を全て取り出す
  • 取り出した要素を変数に代入する

配列の中に配列を入れる

$配列名 = [値1, $別の配列名, 値2,...];

値を取得するには

$配列名[インデックス番号][入れ子のインデックス番号];

配列の中に別の配列の値を入れる

$配列名 = [
    値1,
    ...$別の配列名,
    値2,...
];
  • 配列の中身の型は統一されてなくても大丈夫