【PHP8.x】count関数の使い方

作成日: 更新日:

『count関数は、配列やオブジェクトに含まれる要素の数を数える処理を実行する関数です』 この関数は、引数として渡された配列やオブジェクトがいくつの要素を持っているかを整数で返します。主に配列の長さを知りたい場合に使用され、プログラミングにおいて非常に頻繁に利用される基本的な関数の一つです。第二引数に定数 COUNT_RECURSIVE を指定すると、多次元配列の要素を再帰的に数え、入れ子になった配列内の要素もすべて合計した数を返します。この引数を省略した場合は、最上位の次元の要素数のみが数えられます。また、Countableインターフェースを実装したオブジェクトに対しても使用でき、そのオブジェクトが持つ要素数を取得することが可能です。ただし、Countableを実装していないオブジェクトを渡した場合、PHP 8.0以降ではエラーが発生するため注意が必要です。引数がnullの場合は0を返し、その他の数えられない値が指定された場合は1を返します。

基本的な使い方

構文(syntax)

count(Countable|array $value, int $mode = COUNT_NORMAL): int

引数(parameters)

Countable|array $value, int $mode = COUNT_NORMAL

  • Countable|array $value: 要素数を数えたい配列またはCountableインターフェースを実装したオブジェクト
  • int $mode = COUNT_NORMAL: 数え方(COUNT_NORMAL: 通常モード、COUNT_RECURSIVE: 再帰モード)

戻り値(return)

int

count() 関数は、配列またはカウント可能なオブジェクトに含まれる要素の数を整数で返します。

サンプルコード

php count(null) は 0 を返す

<?php

/**
 * PHPのcount関数がnull値をどのように扱うかを示すサンプルコード。
 *
 * PHP 8.0以降のバージョンでは、count関数は通常、配列またはCountableインターフェースを
 * 実装したオブジェクト以外の値に対してTypeErrorをスローします。
 * しかし、null値については特別な挙動として、TypeErrorをスローせずに0を返します。
 * この挙動はPHP 7.2以降で一貫しており、PHP 8.4でも同様です。
 */

// null値を変数に代入します。
$nullValue = null;

// count関数にnull値を渡した場合の結果を出力します。
// 期待される結果は常に 0 です。
echo "count(null) の結果: " . count($nullValue) . "\n";

?>

PHPのcount関数は、配列やCountableインターフェースを実装したオブジェクトの要素数を数えるための関数です。引数$valueには数えたい対象を渡し、その要素数が整数型(int)として戻り値で返されます。$mode引数は省略可能で、通常は使用しません。

PHP 8.0以降のバージョンでは、count関数は原則として配列やCountableインターフェースを実装したオブジェクト以外の値が渡された場合、TypeErrorをスローします。しかし、null値については特別な挙動が定義されており、TypeErrorを発生させることなく常に0を返します。このnull値に対する挙動はPHP 7.2以降で一貫しており、PHP 8.4でも同様です。

サンプルコードは、このnull値に対するcount関数の特別な挙動を示すものです。変数にnullを代入し、それをcount関数に渡すことで、結果として0が出力されることを確認できます。これにより、null値が渡される可能性がある場合でも、別途エラーハンドリングを記述することなく安全に要素数を0として扱えるため、コードの記述を簡潔に保つことができます。

count関数は、主に配列やCountableインターフェースを実装したオブジェクトの要素数を数えるために使用されます。PHP 8.0以降では、これらの型ではない値を引数に渡すと、通常はTypeErrorが発生しますので注意が必要です。しかし、null値については例外的な扱いとなり、TypeErrorを発生させずに常に0を返します。このnull値に対する特別な挙動はPHP 7.2以降で一貫しており、PHP 8.4でも同様です。この特性を理解しておくことで、意図せずnullが渡された場合でもプログラムが予期せず停止するのを避け、安全に処理を継続できます。

PHP count関数で配列要素数を数える

<?php

/**
 * PHPのcount()関数の基本的な使用例を示します。
 * この関数は、配列やCountableインターフェースを実装したオブジェクトの要素数を数えます。
 * システムエンジニアを目指す初心者向けに、最も一般的な配列での使用例に焦点を当てています。
 */
function demonstrateCountFunction(): void
{
    // 1. 通常の数値インデックス配列の要素数を数える
    $fruits = ["apple", "banana", "cherry"];
    // count()関数は配列$fruitsの要素数を返します。
    $numberOfFruits = count($fruits);
    echo "フルーツの数: " . $numberOfFruits . "\n"; // 出力例: フルーツの数: 3

    // 2. 連想配列の要素数を数える
    $userProfile = [
        "name" => "Alice",
        "age" => 30,
        "city" => "Tokyo"
    ];
    // 連想配列の場合も、キーと値のペアの数を数えます。
    $numberOfProperties = count($userProfile);
    echo "ユーザープロフィールのプロパティ数: " . $numberOfProperties . "\n"; // 出力例: ユーザープロフィールのプロパティ数: 3

    // 3. 空の配列の要素数を数える
    $emptyList = [];
    // 空の配列の場合、count()関数は0を返します。
    $numberOfEmptyItems = count($emptyList);
    echo "空のリストの要素数: " . $numberOfEmptyItems . "\n"; // 出力例: 空のリストの要素数: 0

    // 4. 多次元配列のトップレベル要素数を数える
    // count()関数のデフォルト動作 (COUNT_NORMAL) では、ネストされた配列自体が1つの要素として数えられます。
    $nestedData = [
        "item_a",
        ["sub_item_1", "sub_item_2"], // この配列全体が1つの要素として数えられる
        "item_b"
    ];
    $numberOfTopLevelItems = count($nestedData);
    echo "多次元配列のトップレベル要素数: " . $numberOfTopLevelItems . "\n"; // 出力例: 多次元配列のトップレベル要素数: 3
}

// 上記で定義した関数を実行し、結果を表示します。
demonstrateCountFunction();

PHPのcount()関数は、配列やCountableインターフェースを実装したオブジェクトが持つ要素の数を数え、その合計を整数値として返すために利用されます。この関数は、第一引数に要素数を数えたい対象(配列やオブジェクト)を受け取ります。第二引数はオプションで数え方を指定できますが、通常は省略され、デフォルトのCOUNT_NORMAL(通常の数え方)が適用されます。

例えば、["apple", "banana", "cherry"]という3つの要素を持つ配列にcount()を使うと、3という結果が得られます。["name" => "Alice", "age" => 30, "city" => "Tokyo"]のような連想配列の場合でも、キーと値のペアの数を数えて3を返します。もし配列が[]のように空であれば、count()0を返します。

多次元配列の場合、count()関数のデフォルト動作では、ネストされた配列自体が1つの要素として数えられます。例えば、["item_a", ["sub_item_1", "sub_item_2"], "item_b"]という配列では、["sub_item_1", "sub_item_2"]全体が1つの要素と見なされるため、トップレベルの要素数である3が返されます。このように、count()関数はPHPで配列やコレクションの要素数を手軽に確認するための、非常に重要で便利な関数です。

PHPのcount関数は、配列やCountableインターフェースを実装したオブジェクトの要素数を数えます。サンプルコードのように多次元配列の要素数を数える場合、デフォルトではトップレベルの要素数のみを返します。ネストされた要素もすべて含めて数えたい場合は、第二引数にCOUNT_RECURSIVEを指定してください。空の配列を渡すと0を返します。また、配列やCountableオブジェクト以外の値を引数に渡すと、PHP 8.0以降ではTypeErrorが発生するため、引数の型には十分注意して利用してください。

【PHP8.x】count関数の使い方 | いっしー@Webエンジニア