PHPの配列関数は公式マニュアルに93個ありますが、「生成・追加削除・検索・並べ替え・変換・集計・比較結合・ポインタ・分割代入」の目的で整理すると、必要な関数がすぐに引けます。 PHP 8.4 で array_find / array_find_key / array_any / array_all が、PHP 8.5 で array_first / array_last が加わり、「条件に合う最初の要素」「先頭・末尾の値」もループなしで書けるようになりました。

この記事では全関数を目的別の表に「追加バージョン」つきでまとめ、各関数を1行のコードと実行結果(PHP 8.4.21 で実行)で示します。結果は json_encode 形式で、[1,2] はリスト、{"1":2} はキーが連番でない配列です(キーが保持されるか振り直されるかが一目でわかります)。sort 系の戻り値や array_search の false 判定、foreach の参照が残る問題も実際の出力・エラー文で確認します。バージョンは公式サイトで確認した 2026年9月時点の情報です(最新 8.5.11、8.4 系 8.4.26、8.6 は RC2 で正式版は 2026年11月予定)。

PHP配列関数の早見表(目的別・追加バージョンつき)

「追加」が空欄の関数は PHP 4 からあるものです。「書換」は引数の配列そのものを書き換える関数で、戻り値に結果は入りません。

目的 関数 追加 何をするか
生成 [] / array() 5.4 配列リテラル([] は 5.4 から)
生成 range 連番・文字の並び(8.3 からステップ 0 は ValueError)
生成 array_fill / array_fill_keys / 5.2 同じ値で n 個埋める/キー一覧から初期値つき連想配列
生成 array_combine / array_pad 5.0 / キー配列と値配列から連想配列/指定長まで埋める
生成 compact / explode / str_split / / 5.0 変数から/文字列から配列を作る
追加・削除 array_push / array_unshift 末尾/先頭に追加(戻り値は要素数。書換)
追加・削除 array_pop / array_shift 末尾/先頭を取り出す(array_shift は数値キー振り直し。書換)
追加・削除 unset($a[$k]) キー指定で削除(詰めない。詰めるなら array_values)
追加・削除 array_splice / array_slice 位置指定で削除・置換・挿入(書換)/一部を取り出す
追加・削除 array_filter / array_unique 条件で残す/重複を除く(どちらもキー保持)
検索・判定 in_array 値があるか(第3引数 true で型も比較)
検索・判定 array_search 値からキー(なければ false。!== で判定)
検索・判定 array_key_exists / isset キーがあるか(isset は値が null だと false)
検索・判定 array_find / array_find_key 8.4 条件を満たす最初の値/キー(なければ null)
検索・判定 array_any / array_all 8.4 1つでも/すべて条件を満たすか
検索・判定 array_key_first / array_key_last 7.3 先頭・末尾のキー(空なら null)
検索・判定 array_first / array_last 8.5 先頭・末尾の値(空なら null)
検索・判定 array_is_list 8.1 0 から連番のリストか
検索・判定 count / sizeof / empty 要素数(COUNT_RECURSIVE で入れ子も)/空か
並べ替え sort / rsort 値で昇順/降順(キー振り直し。書換)
並べ替え asort / arsort / ksort / krsort 値で/キーで並べ替え、キー保持(書換)
並べ替え usort / uasort / uksort 比較関数で(8.0 から安定ソート。書換)
並べ替え natsort / natcasesort 自然順(img2 が img10 より前。書換)
並べ替え array_multisort 複数配列・複数列で並べ替え(書換)
並べ替え shuffle / array_rand / array_reverse ランダム化/ランダムにキー選択/逆順
変換・写像 array_map 各要素に関数を適用した新しい配列(1配列ならキー保持)
変換・写像 array_walk / array_walk_recursive / 5.0 各要素を参照で書き換える(書換)
変換・写像 array_reduce 1つの値に畳み込む
変換・写像 array_column 5.5 行配列から列を抜き出す・キーを付け替える
変換・写像 array_values / array_keys / array_flip 値だけ(キー振り直し)/キーだけ/キーと値を交換
変換・写像 array_change_key_case / implode キーの大小文字/文字列に
変換・写像 iterator_to_array / json_decode 5.1 / 5.2 Traversable を配列に/JSON を配列に(第2引数 true)
集計 array_sum / array_product / max / min / array_count_values / 5.1 / / / 合計/積/最大/最小/出現回数(array_sum は 8.3 から非数値に警告)
比較・結合 array_diff / array_diff_key / array_diff_assoc / 5.1 / 差集合(値/キー/両方)
比較・結合 array_intersect / _key / _assoc / 5.1 / 共通部分(値/キー/両方)
比較・結合 array_udiff / array_uintersect ほか u 系 5.0 比較関数つき(_ukey は 5.1)
比較・結合 array_merge / array_merge_recursive 結合(数値キー振り直し、文字列キーは後勝ち)
比較・結合 array_replace / array_replace_recursive 5.3 キーで置き換え(数値キーも保持)
比較・結合 + / ...(スプレッド) / 7.4 左優先で結合/展開して結合(文字列キーは 8.1 から)
比較・結合 array_chunk / == / === n 個ずつ分割/同じキーと値か/順序と型まで同じか
ポインタ current / key / next / prev / reset / end 内部ポインタの操作(each は 8.0 で削除)
分割代入 list() / [$a, $b] = / extract 7.1 分割代入([] 構文とキー指定は 7.1 から)/変数に展開

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「PHP配列関数一覧|8.4/8.5新関数まで目的別に実行例つき」

配列を作る(生成)

range(1, 5) // => [1,2,3,4,5]
range('a', 'e') // => ["a","b","c","d","e"]
range(5, 1, 2) // => [5,3,1]
range(0, 1, 0.25) // => [0.0,0.25,0.5,0.75,1.0]
array_fill(0, 3, 'x') // => ["x","x","x"]
array_fill_keys(['a', 'b'], 0) // => {"a":0,"b":0}
array_combine(['id', 'name'], [7, 'pen']) // => {"id":7,"name":"pen"}
array_pad([1, 2], 4, 0) // => [1,2,0,0]
$x = 1; $y = 2; $r = compact('x', 'y'); // => $r={"x":1,"y":2}

range は 8.3 で仕様が整理され、ステップ 0 は ValueError: range(): Argument #3 ($step) cannot be 0 になります。小数ステップなら float の配列です。

要素を追加・削除する

$a = [1, 2]; $n = array_push($a, 3, 4); // => $n=4  $a=[1,2,3,4]
$a = [1, 2, 3]; $v = array_shift($a); // => $v=1  $a=[2,3]
$a = [5 => 'a', 6 => 'b']; array_shift($a); // => $a=["b"] ※数値キーは 0 から振り直し
$a = ['a', 'b', 'c']; unset($a[1]); // => $a={"0":"a","2":"c"} ※穴が空く
$a = ['a', 'b', 'c']; unset($a[1]); $a = array_values($a); // => $a=["a","c"]
$a = [1, 2, 3, 4, 5]; $cut = array_splice($a, 1, 2); // => $cut=[2,3]  $a=[1,4,5]
$a = [1, 2, 3, 4, 5]; array_splice($a, 1, 2, ['x', 'y']); // => $a=[1,"x","y",4,5]
array_slice([1, 2, 3, 4, 5], 1, 3, true) // => {"1":2,"2":3,"3":4} ※preserve_keys
array_unique([1, '1', 2, 2.0, 'a', 'A']) // => {"0":1,"2":2,"4":"a","5":"A"}
array_filter([0, 1, '', null, 'a', false, [], '0']) // => {"1":1,"4":"a"} ※"0" も落ちる
array_filter([1, 2, 3, 4], fn($v) => $v % 2 === 0) // => {"1":2,"3":4}
array_filter(['a' => 1, 'b' => 2], fn($k) => $k !== 'a', ARRAY_FILTER_USE_KEY) // => {"b":2}
array_filter(['a' => 1, 'b' => 2], fn($v, $k) => $k === 'b' && $v > 1, ARRAY_FILTER_USE_BOTH) // => {"b":2}

array_filter と array_unique はキーを保持するので、JSON にリストとして出すなら array_values で詰めます。コールバックなしの array_filter は "0" や 0 も取り除くため、「空文字と null だけ除く」なら fn($v) => $v !== null && $v !== '' と書きます。

要素を探す・判定する(8.4 の array_find を含む)

in_array('1', [1, 2, 3]) // => true ※緩い比較
in_array('1', [1, 2, 3], true) // => false ※厳密比較
in_array(0, ['a', 'b']) // => false ※8.0 から数値と文字列の比較が変更
array_search('a', ['a', 'b', 'c']) // => 0 ※0 は falsy
array_search('z', ['a', 'b', 'c']) // => false
array_key_exists('k', ['k' => null]) // => true
isset(['k' => null]['k']) // => false
array_key_first(['x' => 1, 'y' => 2]) // => "x"
count([1, [2, 3]], COUNT_RECURSIVE) // => 4
// PHP 8.4 の新関数(コールバックは値・キーの順で受け取る)
array_find([3, 8, 12, 20], fn($v) => $v > 10) // => 12
array_find([3, 8], fn($v) => $v > 10) // => null
array_find_key(['a' => 3, 'b' => 12], fn($v) => $v > 10) // => "b"
array_find(['x' => 1, 'y' => 2], fn($v, $k) => $k === 'y') // => 2
array_any([1, 2, 3], fn($v) => $v > 2) // => true
array_all([1, 2, 3], fn($v) => $v > 0) // => true
array_all([], fn($v) => false) // => true ※空配列は「すべて満たす」
array_any([], fn($v) => true) // => false

array_find は「条件に合う最初の値」を返し、なければ null です。以前は array_filter の結果に reset を組み合わせていた処理が 1 行になります。値そのものが null の要素と区別したいときは array_find_key でキーを取ります。

PHP 8.5 の array_first / array_last は「先頭・末尾の値(空なら null)」を返します。8.4 では次のポリフィルで同じ挙動を確認できます(8.5 では組み込みなので、function_exists で守っておくとそのまま移行できます)。

<?php
if (!function_exists('array_first')) {
    function array_first(array $array): mixed { return $array === [] ? null : $array[array_key_first($array)]; }
    function array_last(array $array): mixed  { return $array === [] ? null : $array[array_key_last($array)]; }
}
var_dump(array_first(['x' => 10, 'y' => 20]), array_last([1, 2, 3]), array_first([]));
// int(10)  int(3)  NULL
やりたいこと 使う関数 戻り値
値があるかだけ知りたい in_array($v, $a, true) bool
値の位置(キー)が欲しい array_search($v, $a, true) キー、なければ false
条件に合う最初の要素が欲しい array_find($a, $fn)(8.4) 値、なければ null
条件に合う要素をすべて欲しい array_filter($a, $fn) 配列(キー保持)
1 つでも/すべて満たすか array_any / array_all(8.4) bool
キーがあるか(値が null でも) array_key_exists($k, $a) bool

並べ替える

sort 系は引数の配列を直接書き換え、戻り値は常に true です(8.2 で戻り値の型が true になりました)。$sorted = sort($a) と書くと $sorted には true が入ります。

$a = [3, 1, 2]; $r = sort($a); // => $r=true  $a=[1,2,3]
$a = ['b' => 2, 'a' => 3, 'c' => 1]; asort($a); // => $a={"c":1,"b":2,"a":3}
$a = ['b' => 2, 'a' => 3, 'c' => 1]; ksort($a); // => $a={"a":3,"b":2,"c":1}
$a = ['b' => 2, 'a' => 3, 'c' => 1]; sort($a); // => $a=[1,2,3] ※キーが消える
$a = [10, 9, 2, '10', 1]; sort($a); // => $a=[1,2,9,10,"10"]
$a = ['img12', 'img10', 'img2']; sort($a, SORT_NATURAL); // => $a=["img2","img10","img12"]
$a = ['img12', 'img10', 'img2']; natsort($a); // => $a={"2":"img2","1":"img10","0":"img12"}
$a = [[3, 'c'], [1, 'a'], [2, 'b']]; usort($a, fn($x, $y) => $x[0] <=> $y[0]); // => $a=[[1,"a"],[2,"b"],[3,"c"]]
$a = ['x' => 3, 'y' => 1]; uasort($a, fn($p, $q) => $p <=> $q); // => $a={"y":1,"x":3}
$d = [3, 1, 2]; $n = ['c', 'a', 'b']; array_multisort($d, $n); // => $d=[1,2,3]  $n=["a","b","c"]
mt_srand(42); $a = [1, 2, 3, 4, 5]; shuffle($a); // => $a=[5,1,2,4,3] ※実行ごとに変わる

usort は 8.0 から安定ソートで、同じ順位の要素は元の順序を保ちます。複数列の並べ替えは、配列同士を <=> で比べると簡潔です。

<?php
$rows = [['n' => 'b', 'v' => 1], ['n' => 'a', 'v' => 1], ['n' => 'c', 'v' => 0], ['n' => 'd', 'v' => 1]];
usort($rows, fn($x, $y) => $x['v'] <=> $y['v']);
echo implode(' ', array_column($rows, 'n')), "\n";   // v が同じ b, a, d の順序は元のまま

$items = [['n' => 'pen', 'p' => 300], ['n' => 'ink', 'p' => 100], ['n' => 'pad', 'p' => 200]];
usort($items, fn($a, $b) => [$b['p'], $a['n']] <=> [$a['p'], $b['n']]); // 価格の降順、同額なら名前の昇順
array_multisort(array_column($items, 'p'), SORT_DESC, $items);          // 同じことを array_multisort で
echo json_encode(array_column($items, 'n')), "\n";
c b a d
["pen","pad","ink"]

比較関数で $x > $y のように bool を返すと Deprecated: usort(): Returning bool from comparison function is deprecated... と表示されます。<=> で -1 / 0 / 1 を返すのが定石です。

変換・写像する(array_map / array_walk / array_reduce / array_column)

array_map(fn($v) => $v * 2, ['a' => 1, 'b' => 2]) // => {"a":2,"b":4} ※1配列ならキー保持
array_map(fn($x, $y) => $x . $y, [1, 2], ['a', 'b']) // => ["1a","2b"] ※複数配列はキー振り直し
array_map(null, [1, 2], ['a', 'b']) // => [[1,"a"],[2,"b"]] ※zip
$a = [1, 2, 3]; array_walk($a, function (&$v, $k) { $v = $v * 10; }); // => $a=[10,20,30]
$a = [1, [2, 3]]; array_walk_recursive($a, function (&$v) { $v++; }); // => $a=[2,[3,4]]
array_reduce([1, 2, 3, 4], fn($carry, $v) => $carry + $v, 0) // => 10
array_reduce([], fn($c, $v) => $c + $v) // => null ※初期値がないと null
array_column([['id' => 1, 'n' => 'pen'], ['id' => 2, 'n' => 'ink']], 'n') // => ["pen","ink"]
array_column([['id' => 1, 'n' => 'pen'], ['id' => 2, 'n' => 'ink']], 'n', 'id') // => {"1":"pen","2":"ink"}
array_column([['id' => 1, 'n' => 'pen'], ['id' => 2, 'n' => 'ink']], null, 'id') // => {"1":{"id":1,"n":"pen"},"2":{"id":2,"n":"ink"}}
iterator_to_array((function () { yield 1; yield 2; })(), false) // => [1,2]
観点 array_map foreach
結果 新しい配列を返す(元は変えない) 何でも書ける(副作用も可)
キー 1 配列ならそのまま、複数配列なら振り直し as $k => $v で常に使える
途中で止める できない break / continue
向いている処理 各要素を変換して同じ長さの配列を返す グループ化、条件分岐、複数の結果を組み立てる

「1 対 1 の変換」は array_map、それ以外は foreach と考えると迷いません。キーも使いたい変換は array_map(fn($k, $v) => "$k:$v", array_keys($a), $a) と 2 配列を渡します。array_walk は元の配列を参照で書き換えたいときに使い、引数に & を付けないと元の配列は変わりません。

集計する

array_sum([1, 2, 3.5]) // => 6.5
array_product([2, 3, 4]) // => 24
max(...[3, 7, 5]) // => 7 ※スプレッドで可変長引数に
array_count_values(['a', 'b', 'a', 1, '1']) // => {"a":2,"b":1,"1":2}
round(array_sum([80, 90, 85]) / count([80, 90, 85]), 1) // => 85.0

array_sum([1, 'abc', 2]) は 8.3 から Warning: array_sum(): Addition is not supported on type string と表示され、結果は 3 です。数値以外が混ざりうるデータは array_filter($a, 'is_numeric') で先に絞ります。

比較・差分・結合・分割する

array_diff([1, 2, 3, 4], [2, 4]) // => {"0":1,"2":3} ※左にだけある値
array_diff_key(['a' => 1, 'b' => 2], ['a' => 9]) // => {"b":2}
array_intersect([1, 2, 3], [2, 3, 4]) // => {"1":2,"2":3}
array_intersect_key(['a' => 1, 'b' => 2, 'c' => 3], ['a' => 0, 'c' => 0]) // => {"a":1,"c":3}
array_merge(['a' => 1, 'b' => 2], ['b' => 9, 'c' => 3]) // => {"a":1,"b":9,"c":3} ※後勝ち
array_merge([5 => 'x'], [5 => 'y']) // => ["x","y"] ※数値キー振り直し
[5 => 'x'] + [5 => 'y', 6 => 'z'] // => {"5":"x","6":"z"} ※左勝ち・キー保持
array_replace([1, 2, 3], [1 => 'b'], [3 => 'd']) // => [1,"b",3,"d"]
[...['a' => 1, 'b' => 2], ...['b' => 9, 'c' => 3]] // => {"a":1,"b":9,"c":3} ※8.1 から文字列キー可
array_merge(...[[1], [2], [3]]) // => [1,2,3] ※配列の配列を平坦化
array_chunk([1, 2, 3, 4, 5], 2) // => [[1,2],[3,4],[5]]
['a' => 1, 'b' => 2] == ['b' => 2, 'a' => 1] // => true ※順序は問わない
['a' => 1, 'b' => 2] === ['b' => 2, 'a' => 1] // => false ※=== は順序も比較
結合方法 同じ文字列キー 数値キー 使いどころ
array_merge 後勝ち 振り直す リストの連結、設定の上書き
+ 左勝ち 保持 「既定値 + 入力」で既定値を優先したいとき
array_replace 後勝ち 保持 数値キーを保ったまま上書き
[...$a, ...$b] 後勝ち(8.1〜) 振り直す array_merge と同じ結果を短く

既定値と入力を合成するなら [...$defaults, ...$input](入力が優先)、未知のキーを落とすなら array_intersect_key($merged, $defaults) を組み合わせます。

内部ポインタを操作する

$a = ['x' => 1, 'y' => 2, 'z' => 3]; $c = current($a); $k = key($a); // => $c=1  $k="x"
$a = ['x' => 1, 'y' => 2, 'z' => 3]; $e = end($a); $k = key($a); // => $e=3  $k="z"
$a = [1, 2, 3]; next($a); $c = current($a); next($a); prev($a); $p = current($a); $r = reset($a); // => $c=2  $p=2  $r=1
$a = []; $e = end($a); // => $e=false

先頭・末尾の値を取るだけなら、ポインタを動かさない array_key_first / array_key_last(7.3)や array_first / array_last(8.5)が読みやすいです。end($a) は空配列で false を返すため、値に false が入りうる配列では区別できません。each() は 8.0 で削除され、Error: Call to undefined function each() になります。

分割代入・compact・extract

[$a, $b] = [1, 2]; // => $a=1  $b=2
['x' => $x, 'y' => $y] = ['x' => 10, 'y' => 20]; // => $x=10  $y=20 ※キー指定(7.1〜)
$a = 1; $b = 2; [$a, $b] = [$b, $a]; // => $a=2  $b=1 ※入れ替え
[$a, $b] = [1]; // => $a=1  $b=null ※Warning: Undefined array key 1
foreach ([[1, 'a'], [2, 'b']] as [$id, $name]) { $r[] = "$id:$name"; } // => $r=["1:a","2:b"]
$n = extract(['p' => 1, 'q' => 2]); // => $n=2  $p=1  $q=2
$p = 1; $n = extract(['p' => 9], EXTR_SKIP); // => $p=1 ※既存の変数は守る

関数から複数の値を返すときは配列を返して [$lo, $hi] = minMax($nums); と受け取るのが PHP らしい書き方です。extract は外部から来た配列に使うと意図しない変数が定義されるため、キーを絞った配列にだけ使います。

実務でよく書く配列処理(実行結果つき)

<?php
declare(strict_types=1);
$items = [
    ['id' => 3, 'name' => 'ノート',   'category' => '文具', 'price' => 200,  'qty' => 5],
    ['id' => 1, 'name' => 'ペン',     'category' => '文具', 'price' => 120,  'qty' => 10],
    ['id' => 2, 'name' => 'ケーブル', 'category' => '備品', 'price' => 800,  'qty' => 2],
    ['id' => 4, 'name' => 'マウス',   'category' => '備品', 'price' => 1500, 'qty' => 1],
];
$j = fn($v) => json_encode($v, JSON_UNESCAPED_UNICODE);
echo '1 ', $j(array_column($items, null, 'id')[2]), "\n";       // id で引ける辞書
echo '2 ', array_sum(array_map(fn($r) => $r['price'] * $r['qty'], $items)), "\n"; // 合計金額
$grouped = [];
foreach ($items as $row) { $grouped[$row['category']][] = $row['name']; }      // グループ化は foreach
echo '3 ', $j($grouped), "\n";
echo '4 ', $j(array_find($items, fn($r) => $r['qty'] <= 1)['name'] ?? null), "\n"; // 8.4
array_walk($items, function (array &$row): void { $row['subtotal'] = $row['price'] * $row['qty']; });
echo '5 ', $j(array_column($items, 'subtotal', 'name')), "\n";
1 {"id":2,"name":"ケーブル","category":"備品","price":800,"qty":2}
2 5300
3 {"文具":["ノート","ペン"],"備品":["ケーブル","マウス"]}
4 "マウス"
5 {"ノート":1000,"ペン":1200,"ケーブル":1600,"マウス":1500}

よくあるつまずきと実際のエラー文

状況 実行結果(PHP 8.4.21) 直し方
if (array_search('red', $colors)) 先頭(キー 0)が見つかっても偽になる !== false で判定する
$sorted = sort($a); $sorted は bool(true)、並ぶのは $a sort($a); の後に $a を使う
usort($a, fn($x, $y) => $x > $y) Deprecated: usort(): Returning bool from comparison function is deprecated... $x <=> $y を返す
array_combine(['a', 'b'], [1]) ValueError: array_combine(): Argument #1 ($keys) and argument #2 ($values) must have the same number of elements 要素数をそろえる
count(null) TypeError: count(): Argument #1 ($value) must be of type Countable|array, null given count($a ?? [])
echo $a['y'];(キーなし) Warning: Undefined array key "y" $a['y'] ?? '既定値'
$a = null; echo $a['x']; Warning: Trying to access array offset on null $a['x'] ?? null

foreach の参照変数が残るのも定番のつまずきです。1 回目のループで &$v を使い、2 回目を値で回すと、最後の要素が上書きされます。

<?php
$a = [1, 2, 3];
foreach ($a as &$v) { $v *= 2; }
foreach ($a as $v) {}   // $v はまだ $a[2] への参照
print_r($a);            // => [2, 4, 4]  最後の要素が 4 になる
// 直し方:1 回目のループの直後に unset($v); を入れると [2, 4, 6] になる

もう 1 つ、PHP の配列は値として代入・引数渡しされる(コピーオンライト)ことも押さえておきます。$b = $a; $b[] = 3; としても $a は [1,2] のままで、呼び出し元を書き換えたいときだけ function f(array &$arr) と参照にします。

array_* と iterator_*、Collection ライブラリの位置づけ

array_* 関数は配列専用で、ジェネレータや Traversable には iterator_to_array / iterator_count で橋渡しします。大量データを少しずつ処理するならジェネレータ(yield)+ foreach、メモリに載る大きさなら array_* で十分です。Laravel の Collection や doctrine/collections は、array_map → array_filter → array_values の連鎖をメソッドチェーンで読みやすくするもので、内部では同じ配列関数が動いています。標準関数の挙動(キーの扱い、書き換えの有無)を押さえておくと、ライブラリの挙動も推測できます。

よくある質問

Q. array_find を 8.3 以前でも使いたいときは? A. foreach ($a as $k => $v) { if ($fn($v, $k)) return $v; } return null; で同じ動作になります。Composer の polyfills/array-find パッケージもあり、8.4 に上げると組み込み関数へそのまま切り替わります。

Q. 連想配列を値で並べ替えたら、キーが消えました。 A. sort / rsort / usort はキーを振り直します。キーを保ったまま値で並べ替えるには asort / arsort / uasort を使ってください。

まとめ

  • 配列関数は「目的別」に引く:生成・追加削除・検索・並べ替え・変換・集計・比較結合・ポインタ・分割代入の分類で必要な関数がすぐ見つかります。
  • 8.4 の array_find / array_find_key / array_any / array_all、8.5 の array_first / array_last で、「条件に合う最初の要素」「先頭・末尾の値」がループなしで書けます。
  • sort 系は引数を書き換えて true を返すため、戻り値ではなく元の変数を使います。連想配列のキーを保つなら asort / uasort です。
  • array_search は !== false、isset は null を区別しないなど、戻り値の型を意識すると判定ミスが防げます。
  • 1 対 1 の変換は array_map、グループ化や分岐は foreach、元配列の書き換えは array_walk と使い分けます。
  • foreach の参照は unset($v) で切る、配列は値渡しという基本で、予想外の書き換えがなくなります。

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「PHP配列関数一覧|8.4/8.5新関数まで目的別に実行例つき」

株式会社RJCでは、PHP の配列操作のような基本を実行結果で確かめながら、プロジェクトの中で仲間と学び合っています。こうした知識を共有しながら、日々技術を磨いています。

株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。

WE ARE HIRING

RJCで一緒に開発しながら、
成長を楽しみませんか?

RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!

  • 127日年間休日
  • 12時間平均残業時間
  • 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!

ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。

ABOUT RJC RJCがどんな会社か知る 考え方、研修、働き方、福利厚生、社員の前職まで。RJCのことが丸わかり! RJC丸わかりページへ JOB DESCRIPTION 仕事内容・待遇を見てみる 仕事内容、給与・待遇、選考の流れ。経験者も未経験も!応募前に知りたいこと、まとめました! 募集要項を見る ENTRY エントリーする エントリーは1〜2分・履歴書不要です。まずは話を聞いてみたい、という方でも歓迎です! エントリーフォームへ

RJCで一緒に開発しながら、 成長を楽しみませんか?