配列
配列の作成
$配列名 = 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,...
];