PHPで配列の要素数を数えるには count() 関数を使います。シンプルですが、ネストした配列の数え方や、null を渡すとPHP 8でエラーになるといった注意点があります。この記事では基本から、つまずきやすいポイントまで解説します。
この記事の結論:要素数は
count($array)。入れ子の中身まで全部数えるなら第2引数に COUNT_RECURSIVE。null や配列でない値を渡すとPHP 8では TypeError になるため、count($array ?? []) のように備えます。count()の基本的な使い方
基本のカウント
<?php $fruits = ["apple", "banana", "cherry"]; echo count($fruits); // 3
sizeof() は count() の別名で、動作は同じです。可読性の観点から count() が一般的に使われます。
ネストした配列を全部数える(COUNT_RECURSIVE)
配列の中に配列がある場合、count() は最上位の要素数だけを返します。入れ子の中身も含めて数えたいときは第2引数に COUNT_RECURSIVE を指定します。
COUNT_RECURSIVE
<?php
$nested = [
[1, 2, 3],
[4, 5, 6],
];
echo count($nested); // 2(外側の要素=内側の配列2つ)
echo count($nested, COUNT_RECURSIVE); // 8
COUNT_RECURSIVE の結果は 8 です(6 ではありません)。内側の要素 3 + 3 = 6 に加えて、外側の配列2つ自身もカウントされるため、2 + 6 = 8 になります。「内側の値だけ」を数えたいわけではない点に注意してください。注意:nullや非配列を渡すとPHP 8でエラー
変数が配列とは限らない場面で count() を使うときは要注意です。null や文字列など配列でない値を渡すと、PHP 7.2以降は警告、PHP 8.0以降は TypeError になります。
安全にカウントする
<?php
$maybeArray = null;
// NG: PHP 8 では TypeError
// echo count($maybeArray);
// OK: null なら空配列とみなす
echo count($maybeArray ?? []); // 0
// OK: 配列か確認してから
if (is_array($maybeArray)) {
echo count($maybeArray);
}
条件に合う要素だけ数える
「3より大きい要素の数」のように条件付きで数えるには、array_filter() で絞り込んでから count() します。
array_filter + count
<?php $numbers = [1, 2, 3, 4, 5]; $filtered = array_filter($numbers, fn($n) => $n > 3); echo count($filtered); // 2(4 と 5)
よくある質問(FAQ)
QCOUNT_RECURSIVEの結果が想定と違います。
A
COUNT_RECURSIVE は内側の要素に加えて、入れ子の配列自身もカウントします。[[1,2,3],[4,5,6]] なら 2(外側)+ 6(内側)= 8 です。内側の値だけを数えるわけではありません。Qcount(null)でエラーになります。
APHP 8.0以降、
null や配列でない値を count() に渡すと TypeError になります。count($x ?? []) や is_array() での確認で備えてください。Qsizeofとcountの違いは?
A違いはありません。
sizeof() は count() の別名です。一般には count() がよく使われます。Q条件に合う要素の数を数えたいです。
A
array_filter() で条件に合う要素だけに絞り込み、その結果を count() します。例: count(array_filter($arr, fn($n) => $n > 3))。まとめ
PHPのcount関数のポイントを整理します。
- 要素数は
count($array)(sizeof()は別名) - 入れ子を全部数えるなら
COUNT_RECURSIVE(外側の配列自身も数える) null・非配列はPHP 8でTypeError→count($x ?? [])- 条件付きは
array_filter()+count()
関連として、array_valuesでキーを振り直す方法・配列に要素を追加する方法・in_arrayで値の存在を確認する方法もあわせて読むと、PHPの配列操作に強くなれます。

