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

作成日: 更新日:

『sizeof関数は、配列やオブジェクトに含まれる要素の数を数える関数です』 この関数は、PHPに標準で組み込まれているcount関数のエイリアス(別名)であり、機能や性能は全く同一です。第一引数に要素数を調べたい配列や、Countableインターフェースを実装したオブジェクトを指定すると、その要素の個数を整数値として返します。例えば、5つの要素を持つ配列を渡した場合、戻り値として5が得られます。オプションの第二引数に定数COUNT_RECURSIVEを指定することで、多次元配列に含まれる全ての要素を再帰的に数えることも可能です。引数に配列やCountableオブジェクト以外の値が渡された場合の挙動には注意が必要です。nullの場合は0を返し、それ以外のスカラー値(数値や文字列など)の場合は1を返します。このため、意図しない結果を避けるためにも、主に対象となる配列やオブジェクトに対して使用することが推奨されます。sizeofという名前は他のプログラミング言語に由来しますが、PHPのコードでは一般的にcount関数が使用される傾向があります。

基本的な使い方

構文(syntax)

$count = sizeof($array);

引数(parameters)

Countable|array $value, int $mode = COUNT_NORMAL

  • Countable|array $value: 要素の数を数えたい配列またはCountableインターフェースを実装したオブジェクト
  • int $mode = COUNT_NORMAL: 数えるモードを指定する整数。COUNT_NORMAL(デフォルト)は通常の要素数、COUNT_RECURSIVEは再帰的な要素数

戻り値(return)

int

sizeof 関数は、配列またはオブジェクトの要素数を整数型 (int) で返します。

サンプルコード

PHPのsizeofとcountの違いを確認する

<?php

/**
 * PHPのsizeof()とcount()関数がエイリアス(別名)であることを示すサンプルコードです。
 *
 * PHPでは、sizeof()とcount()は全く同じ機能を持つ関数であり、
 * 配列やCountableインターフェースを実装したオブジェクトの要素数を取得するために使用されます。
 */
function demonstrateSizeofAndCountEquivalence(): void
{
    // サンプルとして、いくつかの要素を持つ配列を定義します。
    $items = ['Apple', 'Banana', 'Cherry', 'Date', 'Elderberry'];

    echo "--- 配列の要素数確認 ---" . PHP_EOL;

    // sizeof() 関数を使用して要素数を取得します。
    $sizeResult = sizeof($items);
    echo "sizeof(\$items) の結果: " . $sizeResult . PHP_EOL;

    // count() 関数を使用して要素数を取得します。
    $countResult = count($items);
    echo "count(\$items) の結果: " . $countResult . PHP_EOL;

    // 両方の結果が同じであることを確認し、説明を出力します。
    if ($sizeResult === $countResult) {
        echo PHP_EOL;
        echo "上記の通り、sizeof() と count() は同じ値を返します。" . PHP_EOL;
        echo "これらはPHPにおいて全く同じ機能を持つエイリアス(別名)であるため、" . PHP_EOL;
        echo "どちらを使用しても結果に違いはありません。" . PHP_EOL;
        echo "一般的には count() の方が広く使われる傾向にあります。" . PHP_EOL;
    } else {
        echo "エラー: sizeof() と count() が異なる結果を返しました。これは予期しない動作です。" . PHP_EOL;
    }

    echo PHP_EOL;

    // 空の配列での動作も確認します。
    $emptyItems = [];
    echo "--- 空の配列の要素数確認 ---" . PHP_EOL;
    echo "sizeof(\$emptyItems) の結果: " . sizeof($emptyItems) . PHP_EOL;
    echo "count(\$emptyItems) の結果: " . count($emptyItems) . PHP_EOL;
}

// 関数を実行して動作を確認します。
demonstrateSizeofAndCountEquivalence();

?>

PHPのsizeof()関数は、配列やCountableインターフェースを実装したオブジェクトの要素数を取得するために使用される関数です。引数 $value には要素数を数えたい配列またはCountableオブジェクトを、オプションの $mode にはCOUNT_NORMAL(デフォルト)またはCOUNT_RECURSIVEを指定できますが、通常はCOUNT_NORMALが使用され、単純な要素数が取得されます。戻り値は要素の数を表す整数値です。

このsizeof()関数は、count()関数と全く同じ機能を持つエイリアス(別名)です。つまり、PHPではこれら二つの関数は完全に同等であり、同じ入力に対して常に同じ結果を返します。

サンプルコードでは、具体的に配列を定義し、sizeof()count()の両方を使用して要素数を取得しています。実行結果として、両関数が全く同じ整数値を返すことが確認でき、これらが機能的に等しいエイリアスであることが明確に示されています。また、空の配列に対する動作も同様に検証されており、どちらの関数も0を返すことが分かります。

どちらの関数を使用しても動作に違いはありませんが、一般的にはcount()の方がより広く使われる傾向にあります。

PHPのsizeof()count()関数は、全く同じ機能を持つエイリアス(別名)です。どちらを使っても配列やCountableインターフェースを実装したオブジェクトの要素数を取得できますが、一般的にはcount()の方が広く使われ、推奨される傾向にあります。そのため、特別な理由がない限りcount()を使用する習慣をつけましょう。引数には必ず配列か、Countableインターフェースを実装したオブジェクトを指定してください。数値や文字列など、それ以外の型の値を渡すと、PHP 8.0以降ではTypeErrorが発生するなど、予期せぬエラーの原因となる可能性がありますので注意が必要です。安全で堅牢なコードのため、引数の型を意識することが重要です。

PHPのsizeof()count()の比較

<?php

/**
 * sizeof() 関数と count() 関数の比較を示すサンプルコードです。
 * sizeof() は count() のエイリアス(別名)であり、同じ機能を持ちます。
 */

// 配列を定義します。
$fruits = ['apple', 'banana', 'cherry', 'date'];

echo "--- 配列の要素数を確認 ---" . PHP_EOL;

// sizeof() 関数を使って配列の要素数を取得します。
$sizeOfFruits = sizeof($fruits);
echo "sizeof() を使った配列の要素数: " . $sizeOfFruits . PHP_EOL;

// count() 関数を使って配列の要素数を取得します。
$countOfFruits = count($fruits);
echo "count() を使った配列の要素数: " . $countOfFruits . PHP_EOL;

// 両関数の結果が同じであることを確認します。
if ($sizeOfFruits === $countOfFruits) {
    echo "結果は同じです。sizeof() と count() は全く同じ処理を行います。" . PHP_EOL;
    echo "PHPにおいては、一般的に count() の使用が推奨されます。" . PHP_EOL;
} else {
    echo "エラー: sizeof() と count() の結果が異なります。" . PHP_EOL;
}

echo PHP_EOL . "--- 空の配列の場合 ---" . PHP_EOL;

// 空の配列
$emptyArray = [];
echo "空の配列の sizeof(): " . sizeof($emptyArray) . PHP_EOL;
echo "空の配列の count(): " . count($emptyArray) . PHP_EOL;

?>

PHPのsizeof()関数は、配列やオブジェクトの要素数を取得するために使われます。引数$valueには要素数を調べたい配列またはCountableインターフェースを実装したオブジェクトを指定し、その要素数を整数値(int)で返します。オプションの第二引数$modeは要素の数え方を指定するものですが、通常はデフォルト値が適用されます。

sizeof()は、PHPにおいてcount()関数のエイリアス(別名)であり、両者は完全に同じ機能と挙動を持ちます。そのため、どちらの関数を使用しても同じ結果が得られます。

サンプルコードでは、定義した配列の要素数をsizeof()count()の両方で取得し、両者が同じ結果を返すことを示しています。また、空の配列に対しても同様に、両関数が「0」を返すことを確認できます。

機能的な差はありませんが、PHPでは一般的にcount()関数の使用が推奨されています。これは、countという名前が関数の役割をより直感的に表現しているためです。

sizeof()count()関数のエイリアス(別名)であり、機能的には全く同じです。そのため、どちらを使用してもプログラムの動作や結果に違いはありません。PHPの公式ドキュメントやコミュニティでは、一般的にcount()の使用が推奨されています。これは、C言語などの他のプログラミング言語におけるsizeofがメモリサイズを返すなど、PHPのsizeof()とは異なる意味を持つことが多いため、混同を避け、コードの意図をより明確にするためです。引数には配列やCountableインターフェースを実装したオブジェクトを渡す必要があり、それ以外の型ではエラーとなる場合がありますので注意してください。戻り値は常に要素数を表す整数です。

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