2016-03-29 19 views
1

妥当性検査が成功した場合はtrueを返し、妥当性検査が失敗した場合はエラーの配列を返したい妥当性検査機能を持っています。しかし、関数がtrueを返すかどうかをチェックすると、返された値が配列であってもtrueを返します。どうしてこれなの?PHP "trueなら"配列のテストは常にtrueを返しますか?

$array = ['test' => 'test']; 
if ($array == true) 
    { 
    echo 'true'; 
    } 

と私は、文字列と同じ試してみました::私が何を意味するかのさらなる例として

$string = 'string'; 
if ($string == true) 
    { 
    echo 'true'; 
    } 

そして、両方が真のエコー。

これはなぜですか?これを行うことができれば、なぜisset()関数が必要なのでしょうか?マニュアルhttp://php.net/manual/en/types.comparisons.php

Expression    gettype() empty() is_null() isset() boolean 
----------------------------------------------------------------------- 
$x = array();   array  TRUE  FALSE  TRUE FALSE 
$x = array('a', 'b'); array  FALSE  FALSE  TRUE TRUE 
$x = "";    string  TRUE  FALSE  TRUE FALSE 
$x = "php";   string  FALSE  FALSE  TRUE TRUE 

に記載されているように

+0

検索 'in_array()' – aldrin27

+0

配列に 'count()'を使用できます。配列が0の場合はfalseです。 – kunicmarko20

+0

これらはオプションであることを知っています - なぜ "本当ですか?そしてなぜif($ variable)を使うことができるのであれば、なぜisset関数が必要なのでしょうか? – user3640967

答えて

4

これは期待される動作であるので、空の文字列や配列はfalseと評価され、非空の文字列や配列はtrueと評価されます。

一方、isset()は、実際の値に関係なく変数が定義されているかどうかを判断します。何とか違う値があるのはnullです。値nullの変数は、isset()でテストするとfalseを返します。

関連する問題