web-dev-qa-db-ja.com

何かがカウント可能かどうかを確認するにはどうすればよいですか?

私は変数を持っています:$a。何なのかわかりません。数えられるか確認したい。通常、配列のみでこれを行うことができます:

if (is_array($a)) {
    echo count($a);
}

しかし、他のいくつかは数えることができます。 Illuminate\Support\CollectionはLaravelでカウント可能です:

if ($a instanceof \Illuminate\Support\Collection) {
    echo count($a);
}

しかし、両方のことを1つで実行するための何かがあります(そして、おそらく他のいくつかのカウント可能なインスタンスで動作します)。何かのようなもの:

if (is_countable($a)) {
    echo count($a);
}

この種の機能はありますか?私は何か見落としてますか?

10
rap-2-h

PHP 7.3

documentation によると、is_countable 関数:

if (is_countable($a)) {
    echo count($a);
}
11
rap-2-h

以前のPHPバージョンの場合、これを使用できます

if (is_array($foo) || $foo instanceof Countable) {
    return count($foo);
}

または、このようなポリフィルを実装することもできます

if (!function_exists('is_countable')) {

    function is_countable($c) {
        return is_array($c) || $c instanceof Countable;
    }

}

このポリフィルは私が思いついたものではなく、新しい関数の提案のためにRFCから直接引き出されたものであることに注意してください https://wiki.php.net/rfc/is-countable