配列の操作
配列操作の関数一覧 ▲
関数 | 用途 |
---|---|
sort/rsort | 配列を 昇順/降順 にソートする |
asort/arsort | 連想キーと要素との関係を維持しつつ配列を 昇順/降順 にソートする |
usort | ユーザー定義の比較関数を使用して、配列を値でソートする |
compact | 変数名とその値から配列を作成する |
extract | 配列からシンボルテーブルに変数をインポートする |
count | 配列または Countable オブジェクトに含まれるすべての要素の数を数える |
current | 配列内の現在の要素を返す |
next | 配列の内部ポインタを進める |
prev | 内部の配列ポインタをひとつ前に戻す |
reset | 配列の内部ポインタを先頭の要素にセットする |
in_array | 配列に値があるかチェックする |
array_combine | 一方の配列をキーとして、もう一方の配列を値として、ひとつの配列を生成する |
array_map | 指定した配列の要素にコールバック関数を適用する |
array_fill | 配列を指定した値で埋める |
range | ある範囲の整数を有する配列を作成する |
array_shift | 配列の先頭から要素を一つ取り出す |
array_pop | 配列の末尾から要素を取り除く |
array_unshift | 一つ以上の要素を配列の最初に加える |
array_push | 一つ以上の要素を配列の最後に追加する |
array_replace | 渡された配列の要素を置き換える |
array_merge | ひとつまたは複数の配列をマージする |
array_reverse | 要素を逆順にした配列を返す |
array_search | 指定した値を配列で検索し、見つかった場合に対応する最初のキーを返す |
配列を 昇順/降順 にソートする sort/rsort ▲
sort(array &$array, int $flags = SORT_REGULAR): true
rsort(array &$array, int $flags = SORT_REGULAR): true
array を値で 昇順/降順 にソートする
結果が等しくなる二つの要素があった場合、PHP 8.0.0 より前のバージョンでは並び順が不定だった
array パラメータの要素に対して新しいキーを割り当てる
その際、すでに割り当てられている既存のキーは削除してしまう
- $array
- 入力の配列
- $flags
- ソートの動作を修正可能(詳細は参考文献1より)
- 戻り値
- 常に true を返す
連想キーと要素との関係を維持しつつ配列を 昇順/降順 にソートする asort/arsort ▲
asort(array &$array, int $flags = SORT_REGULAR): true
arsort(array &$array, int $flags = SORT_REGULAR): true
配列のキーと要素との関係を維持しつつ、 array を 昇順/降順 にソートします
結果が等しくなる二つの要素があった場合、PHP 8.0.0 より前のバージョンでは並び順が不定だった
- $array
- 入力の配列
- $flags
- ソートの動作を修正可能(詳細は参考文献1より)
- 戻り値
- 常に true を返す
ユーザー定義の比較関数を使用して、配列を値でソートする usort ▲
usort(array &$array, callable $callback): true
順序を決めるユーザー定義の比較関数により、 array をその値でソートする
結果が等しくなる二つの要素があった場合、PHP 8.0.0 より前のバージョンでは並び順が不定だった
array パラメータの要素に対して新しいキーを割り当てる
その際、すでに割り当てられている既存のキーは削除してしまう
- $array
- 入力の配列
- $callback
- 比較関数は、最初の引数と二番目の引数の比較結果を返す
最初の引数のほうが二番目の引数より大きい場合は正の整数を、二番目の引数と等しい場合はゼロを、そして二番目の引数より小さい場合は負の整数を返す必要がある
そのため、宇宙船演算子と相性がよかったりする - 戻り値
- 常に true を返す
変数名とその値から配列を作成する compact ▲
compact(array|string $var_name, array|string ...$var_names): array
変数名とその値から配列を作成する
extract() とは逆の動作をする
- $var_name / var_names
- compact() がとるパラメータの数は可変である
各パラメータは、変数名を値とする文字列か、 変数名の配列のどちらかをとれる
与えられた文字列が示す変数が未定義の場合は E_NOTICE レベルのエラーを出す - 戻り値
- 追加された全ての変数を値とする出力配列を返す
配列からシンボルテーブルに変数をインポートする extract ▲
extract(array &$array, int $flags = EXTR_OVERWRITE, string $prefix = ""): int
配列からシンボルテーブルに変数をインポートする
compact() とは逆の動作をする
各キーについて変数名として有効であるかどうか、そして、シンボルテーブルの既存の変数と衝突しないかどうかを確認する
- $array
- 連想配列を指定する
連想配列のキーを変数名、値を変数の値としてインポートする
既に定義されている変数と衝突した場合は $flags に設定された挙動をとる - $flags
- 無効な値や衝突時に関する制御をフラグで設定できる(詳細は参考文献1より)
- $prefix
- $flags での衝突時の制御が『接頭辞を付けて対処』であった場合に使用される
- 戻り値
- シンボルテーブルにインポートした変数の数を返す
要素の数を数える count ▲
count(Countable|array $value, int $mode = COUNT_NORMAL): int
配列または Countable オブジェクトに含まれるすべての要素の数を数える
配列の場合は、配列の全ての要素を数える
Countable インターフェイスを実装したオブジェクトの場合は、Countable::count() の戻り値を返す
- $value
- 配列あるいは Countable オブジェクト
- $mode
- $mode が COUNT_RECURSIVE (または 1) にセットされた場合、count() は再帰的に配列をカウントする(多次元配列の全ての要素をカウントするといった場合に特に有効)
- 戻り値
- value の要素の数を返す
配列内の現在の要素を返す current ▲
current(array|object $array): mixed
各配列は、"カレント"の要素へのポインタを有している
このポインタは、配列に挿入された最初の要素を指すように初期化される
- $array
- 配列
- 戻り値
- 内部ポインタが現在指している配列要素の値を返す。
この関数ではポインタはまったく移動しない
内部ポインタが最終要素の次を指していたり配列が空だったりした場合は false を返す
配列の内部ポインタを進める next ▲
next(array|object &$array): mixed
next() は要素を返す前に内部配列ポインタをひとつ先に進める
- $array
- 配列
- 戻り値
- 内部ポインタが現在指す次の配列要素の値を返す。最終要素を指していたり配列が空だったりした場合は false を返す
内部の配列ポインタをひとつ前に戻す prev ▲
prev(array|object &$array): mixed
内部の配列ポインタをひとつ前に戻す
- $array
- 配列
- 戻り値
- 内部ポインタが現在指す前の配列要素の値を返す。要素がない場合は false を返す
配列の内部ポインタを先頭の要素にセットする reset ▲
reset(array|object &$array): mixed
reset() は、array の内部ポインタの先頭の要素に戻し、配列の最初の要素の値を返す
- $array
- 配列
- 戻り値
- 配列の最初の要素の値を返す。配列が空なら false を返す
配列に値があるかチェックする in_array ▲
in_array(mixed $needle, array $haystack, bool $strict = false): bool
$haystack 内の $needle を検索する
$strict が設定されていない限りは型の比較は行わない
- $needle
- 探す値
- $haystack
- 配列
- $strict
- 型まで厳密にチェックするかどうか
- 戻り値
- 配列で $needle が見つかった場合に true、それ以外の場合は、false を返す
2つの配列を元に配列を生成する array_combine ▲
array_combine(array $keys, array $values): array
$keys 配列の値をキーとして、また $values 配列の値を対応する値として生成した配列を作成する
- $keys
- キーとして使用する配列
無効な値を渡すと文字列に変換される - $values
- 値として使用する配列
- 戻り値
- 作成した配列を返す
指定した配列の要素にコールバック関数を適用する array_map ▲
array_map(?callable $callback, array $array, array ...$arrays): array
$array ( および、それ以上の配列が与えられた場合は $arrays )の各要素に $callback を適用した後、適用後の要素を含む配列を返す
- $callback
- 配列の各要素に適用する callable
複数の配列に zip 操作を行うために、$callback に null を渡すことができる - $array
- コールバック関数を適用する配列
- $arrays
- $callback に渡す引数を指定する配列の可変リスト
- 戻り値
- 作成した配列を返す
配列を指定した値で埋める array_fill ▲
array_fill(int $start_index, int $count, mixed $value): array
パラメータ $value を値とする $count 個のエントリからなる配列を用意する
- $start_index
- 返される配列の最初のインデックス
- $count
- 挿入する要素数
ゼロ以上の数でなければならない - $value
- 要素に使用する値
- 戻り値
- 作成した配列を返す
ある範囲の整数を有する配列を作成する range ▲
range(string|int|float $start, string|int|float $end, int|float $step = 1): array
ある範囲の整数を有する配列を作成する
- $start
- シーケンスの最初の値
- $end
- 値が $end に達するまでシーケンスが続く
- $step
- 要素毎の増加(または減少)数となる
0や指定した範囲を超える値であってはならない - 戻り値
- start から end までの整数の配列を返す
配列の先頭から要素を一つ取り出す array_shift ▲
array_shift(array &$array): mixed
$array の最初の値を取り出して返す
$array は、要素一つ分だけ短くなり、全ての要素は前にずれる
数値添字の配列のキーはゼロから順に新たに振りなおされるが、リテラルのキーには影響しない
- $array
- 入力の配列
- 戻り値
- 取り出した値を返す
$array が空の場合や配列でない場合は null を返す
配列の末尾から要素を取り除く array_pop ▲
array_pop(array &$array): mixed
$array の最後の要素の値を取り出して返す
$array は要素一つ分だけ短くなる
- $array
- 入力の配列
- 戻り値
- 取り出した値を返す
$array が空の場合は null を返す
一つ以上の要素を配列の最初に加える array_unshift ▲
array_unshift(array &$array, mixed ...$values): int
$array の先頭に指定された要素を加える
リストの要素は全体として加えられるため、 加えられた要素の順番は変わらないことに注意すること
配列の数値添字はすべて新たにゼロから振りなおされる
リテラルのキーについては変更されない
- $array
- 入力の配列
- $values
- 加える値
- 戻り値
- 処理後の $array の要素の数を返す
一つ以上の要素を配列の最後に追加する array_push ▲
array_push(array &$array, mixed ...$values): int
$array の最後に指定された要素を加える
配列にひとつの要素を加えるだけなら $array[] = $value; のほうが関数呼び出しのオーバーヘッドがないため高速
- $array
- 入力の配列
- $values
- 加える値
- 戻り値
- 処理後の $array の要素の数を返す
渡された配列の要素を置き換える array_replace ▲
array_replace(array $array, array ...$replacements): array
$array の値をそれ以降の配列の同じ要素の値で置き換える
最初の配列のキーと同じキーが2番目の配列にあれば、2番目の配列の値が最初の配列の値を上書きする
2番目の配列に存在するキーが最初の配列に存在しなければ、そのキーが新たに最初の配列内に作られる
最初の配列にしか存在しないキーについては変化しない
置き換え用の配列が複数渡された場合は渡した順に処理を行い、後から渡した配列の値のほうが優先される
- $array
- 要素を置き換えたい配列
- $replacements
- 置き換えたい要素を含む配列
後から渡した配列の値のほうが優先される - 戻り値
- 置き換えたあとの配列を返す
ひとつまたは複数の配列をマージする array_merge ▲
array_merge(array ...$arrays): array
前の配列の後ろに配列を追加することにより、ひとつまたは複数の配列の要素をマージし、得られた配列を返す
入力配列が同じキー文字列を有していた場合、そのキーに関する後に指定された値が、 前の値を上書きする
しかし、配列が同じ添字番号を有していても値は追記されるため、このようなことは起きない
- $array
- 要素を置き換えたい配列
- $replacements
- 置き換えたい要素を含む配列
後から渡した配列の値のほうが優先される - 戻り値
- 置き換えたあとの配列を返す
要素を逆順にした配列を返す array_reverse ▲
array_reverse(array $array, bool $preserve_keys = false): array
配列を受け取って、要素の順番を逆にした新しい配列を返す
- $array
- 入力の配列
- $preserve_keys
- true の場合は数値のキーを保持する
非数値のキーは、この設定にかかわらず常に保持される - 戻り値
- 逆転させた配列を返す
指定した値を配列で検索し、見つかった場合に対応する最初のキーを返す array_search ▲
array_search(mixed $needle, array $haystack, bool $strict = false): int|string|false
$haystack 内の $needle を検索
- $needle
- 検索したい値
$needle が文字列の場合、大文字小文字を区別して比較が行われる - $haystack
- 配列
- $strict
- true の場合は $haystack の中で $needle の厳密な型比較を実行する
- 戻り値
- $needle が見つかった場合に配列のキー、 それ以外の場合に false を返す
最初にマッチした要素のキーのみを返すので、全てのマッチした要素のキーを取得する場合は array_keys() を使用すること
目次