1

この質問は情報提供のみを目的としています。

変数が is_set かどうかを確認し、そうであれば null に設定されているかどうかを確認する方法があるかどうか疑問に思っていました

PHP の型比較表に基づくと、それは可能ではないようです。

たとえば、次のコードがあるとします。

<?php
$x = null;
if(isset($x) && is_null($x)){
    echo '$x is set to NULL';
}else{
    echo '$x was never initialized';
}
echo "\n";
if(isset($y) && is_null($y)){
    echo '$y is set to NULL';
}else{
    echo '$y was never initialized';
}
echo "\n";
if(is_null($z)){
    echo '$z is set to NULL';
}else{
    echo '$z was never initialized';
}

?>

ページが表示されることを期待します:

$x is set to NULL
$y was never initialized
$z is set to NULL   <it should give an E_NOTICE>

しかし、私は得ています

$x was never initialized
$y was never initialized
$z is set to NULL
4

3 に答える 3

2
$variablename_to_check_against = "varname";
$vars = get_defined_vars();
if (array_key_exists($variablename_to_check_against, $vars) && is_null($$variablename_to_check_against)) {
    echo "$variablename_to_check_against is NULL and exists";
}

get_defined_varsキーと値のペアでローカル変数スコープ (スーパーグローバルを含む) を返します。

array_key_exists変数が の場合も true を返すのでNULL、使用できます。次に、変数がNULLwith であるかどうかを確認するだけis_nullです。

于 2013-05-16T17:01:30.013 に答える