phpでempty()、isset()、is_null()と変数自体のブール判定の違い

8120 ワード

phpスクリプトでは、変数が定義されているか、空であるかを判断するには、これらの関数empty()、isset()、is_を使用する必要があります.null()とそれ自体をパラメータとして、次のセグメントプログラムを簡単に比較します.
<?php
// : , 0, 0,null, false,
$arr_var = array('', '0', 0, null, false, array());

foreach ($arr_var as $value) {
echo '<br> :' . $value . '<br>';
if (!isset($value)) {
echo 'isset()==false<br>';
}
if (empty($value)) {
echo 'empty()==true<br>';
}
if (!$value) {
echo 'self==false<br>';
}
if (is_null($value)) {
echo 'is_null()==true<br>';
}
}
?>



empty()==true
self==false

:0
empty()==true
self==false

:0
empty()==true
self==false


isset()==false
empty()==true
self==false
is_null()==true


empty()==true
self==false

:Array
empty()==true
self==false


まとめ1:結果から分かるように、「」、0、「0」、NULL、FALSE、array()のうち、empty()と「変数自体がパラメータ」の結果は一致し、いずれも「空」として処理され、isset()とis_null()はnullの場合のみ「空」として処理されます(falseは空とはみなされません)
次に、変数が初期化を定義していない場合、これらの関数は何を返しますか?
echo '<br>    :undefine<br>';
if (!isset($value_undefine)) {
echo 'isset()==false<br>';
}
if (empty($value_undefine)) {
echo 'empty()==true<br>';
}
if (!$value_undefine) {
echo 'self==false<br>';
}
if (is_null($value_undefine)) {
echo 'is_null()==true<br>';
}


:undefine
isset()==false
empty()==true

( )
self==false

( )
is_null()==true

総括2:結果から分かるように、変数が定義されていない場合、is_null()と「自己パラメータ」はパラメータとして判断することは許されませんが、結果的に「空」と判断できるので、使用しないことをお勧めします.
isset()とempty()は正常に「空」と判断できる.
 
    :



isset(),  null    ,  false



empty(),""、0、"0"、NULL、FALSE、array(),   ,   false



      , empty()  ,         ,   



is_null(),      null,