3

変数が設定されていない、または存在しないと言うために、なぜ誰かがisset単に関数を使用したいのだろうかと思っていました。!

例えば:

<?php
    if(!$name){
        echo 'Name is not set';
    }
    if(isset($name) == false){
        echo 'Returned false';
    }
?>

両方ともエコーアウトされませんか?使用する方が良いと言われましたが、そのisset理由がわかりません。誰か説明できますか?

4

4 に答える 4

3

$variableName を直接使用し、そのチェックの前に $variableName が定義されていない場合、未定義の変数の警告が php によって生成されます。isset を使用する場合、変数が以前に定義されている場合は isset が true を返し、定義されていない場合は isset が false を返すため、未定義の変数またはインデックスの警告は生成されません。

以前に定義されていない場合がある場合は、変数で isset を使用することをお勧めします。

<?php
    if(!$name){   //this will generate a warning
        echo 'Name is not set';
    }
    if(isset($name) == false){   //this will not as isset returns false
        echo 'Returned false';
    }
?>
于 2013-09-12T12:03:08.443 に答える
-1

関数はisset()、変数が設定されていて NULL でないかどうかを判断します。

で設定を解除した変数は、設定unset()されなくなります。isset()NULL に設定された変数をテストすると、FALSE が返されます。("\0")また、NULL バイトは PHP の NULL 定数と同等ではないことに注意してください。

複数のパラメータが指定されているisset()場合、すべてのパラメータが設定されている場合にのみ TRUE を返します。評価は左から右に進み、設定されていない変数が検出されるとすぐに停止します。

スクリプトを使用しないisset()と警告が生成されisset()ますが、これを防ぐことができます。

たとえば、使用する理由isset()は、キーが配列内にあるかどうかを検出することです。

例えば:

<?php

$a = array ('test' => 1, 'hello' => NULL, 'pie' => array('a' => 'apple'));

var_dump(isset($a['test']));            // TRUE
var_dump(isset($a['foo']));             // FALSE
var_dump(isset($a['hello']));           // FALSE

// The key 'hello' equals NULL so is considered unset
// If you want to check for NULL key values then try: 
var_dump(array_key_exists('hello', $a)); // TRUE

// Checking deeper array values
var_dump(isset($a['pie']['a']));        // TRUE
var_dump(isset($a['pie']['b']));        // FALSE
var_dump(isset($a['cake']['a']['b']));  // FALSE

 if(!$a['hello']){   //this will display a warning: Undefined variable.
    echo 'hello is not set in the array';
}
?>

!あなたの例の問題は、PHPの演算子が であることですNOT。そのため、2 つの if 行では同じ結果が得られますが、最初の行には変数がないため未定義の変数の警告が表示され$name、2 番目の if は変数に対して行わNOTれます$name

<?php
    if(!$name){//this will display a warning: Undefined variable.
        echo 'Name is not set';
    }

     $name=0;
     if(!$name){//check the not value of $name.
        echo 'Name is true';
    }

?>
于 2013-09-12T12:03:38.070 に答える