2013-03-10 14 views
14

あなたはなぜ<?= count(false) ?>1を返すのか知っていますか?なぜcount(false)が1を返しますか?

+0

[falseのカウントは1を返し、空の配列の場合はfalseを返します。なぜ?](http://stackoverflow.com/questions/3776882/count-of-false-gives-1-and-if-of-an-empty-array-gives-false-why) – mario

答えて

22

それは、指定の動作は:

varが配列や実装可算 インターフェイスを持つオブジェクトでない場合、1が返されます。

PHP素子がアレイまたはオブジェクトであるかどうかを決定するためにcount()を使用してから1を妨げているようhttp://php.net/manual/en/function.count.php

+3

... 5秒で私を打ち負かすので、私はあなたに+1を与えるでしょう – Daedalus

+0

カウントから0を得る方法配列がない場合は?? – Ritesh

+0

@Ritesh '$ count = $ var!= false? count($ var):0; '? – aesede

8

falseも値であり、count()が配列を取得するのではなく有効な変数である場合、trueを返します。これは1です。

$result = count(null); 
// $result == 0 

$result = count(false); 
// $result == 1 
+1

"ランダム"コメント:それは、(0)がfalseを返し、if(-1)がtrueを返す場合のようなものです。 –

+0

あなたはクローズしています: 'true'を返しません。 'count'は配列を期待しており、' var'が1でなければ配列にキャストします。 'false'は有効な値なので、' false'という値を持つ要素を1つ持つ配列にキャストします。 http://justinsomnia.org/2007/12/in-php-countfalse-returns-1/ –

1

によれば、それは私に見えます。彼らはこれ専用の機能を持っています(is_array(),)。count()を素直に使い、falseの条件をチェックして配列やオブジェクトを調べることができます。代わりに、PHPは非オブジェクト、非配列を1(真実です)に返します。この方法は、この方法で純粋に使用することはできません(0は空の配列/オブジェクトに対して有効な偽の結果です)。

これは、あなたが記述している状況で関数が返す値の背後にある理由かもしれません。

+0

彼は配列やオブジェクトであるかどうかを調べようとしていないので、配列の長さを調べて、0レコードまたは存在しない配列がまだ1を返す理由を調べようとしています。 – jerebear

1

あなたの心にこのことを覚えて良い方法:

  • 数(偽)は、基本的には同じです:
  • 数(「1つのブール」)、したがって、「ONE」ブールなどがあります結果。
関連する問題