count.php
<?php
function echoCount($val)
{
var_dump($val);
echo "=> ";
echo count($val);
echo "\n";
}
echoCount("a");
echoCount("1");
echoCount("0");
echoCount(1);
echoCount(0);
echoCount(true);
echoCount(false);
として実行すると、
$ php count.php
string(1) "a"
=> 1
string(1) "1"
=> 1
string(1) "0"
=> 1
int(1)
=> 1
int(0)
=> 1
bool(true)
=> 1
bool(false)
=> 1
こんな感じになる。
phpのマニュアル|count関数によると、
varに含まれる要素の数を返します。 もし var が配列もしくは Countable インターフェイスを実装したオブジェクトではない場合、 1 が返されます。 ひとつ例外があり、var が NULL の場合、 0 が返されます。
とのこと。intやboolや文字列は、配列ではないので、1が返されるようだ。
なので、
if ( is_array($var) && count($var) > 0 ) {
// ....
}
みたいにするのがよさげ。
PHPおそろしい子っ!!