8

私の仮定の後に、仮定に基づく質問が続きます。

Javascript にはnullとがありundefinedます。変数を に設定しnullて、値がないことを意味するか、 に設定undefinedして、値があるかどうかがわからないことを意味することができます-まったく設定されていません。

PHP には がnullあり、これまでnullは Javascript で使用するのと同じ方法で使用してきました。PHPには同等のものがありundefinedますか?

4

5 に答える 5

7

undefined実際には、PHP には対応するものはありません。JSundefinedと PHP を比較nullしても実際には一致しませんが、ほぼ同じです。両方の言語で、次の値/非値を割り当てることができます。

var nothingness = undefined;
$nothing = null;

また、変数を宣言しても何も割り当てていない場合、JS は var をundefinedに解決し、PHP はその変数を解決 (または割り当て) するように見えますnull

var nothingness;
console.log(nothingness === undefined);//true

$foo;
echo is_null($foo) ? 'is null' : '?';//is null

issetただし、注意してください。

$foo = null;
//clearly, foo is set:
if (isset($foo))
{//will never echo
    echo 'foo is set';
}

変数が存在するかどうかを知る唯一の実際のget_defined_vars方法は、知る限り、次を使用することです。

$foo;
$bar = null;
$defined = get_defined_vars();
if (array_key_exists($defined, 'foo'))
{
    echo '$foo was defined, and assigned: '.$foo;
}
于 2013-07-01T07:05:56.220 に答える
4

ないと思いますundefinedundefined何かがJavaScript の場合と同じかどうかを確認するのではなく、次のようにします。

if(object.property === undefined) // Doesn't exist.

あなたはただ使うisset()

if(!isset($something)) // Doesn't exist.

undefinedまた、あなたの理解は少し奇妙だと思います。プロパティをに設定するべきではありませんundefined。これは非論理的です。何かが未定義かどうかを確認したいだけです。つまり、スコープ内のどこにも定義していないことを意味します。isset()このコンセプトに従います。

そうは言っても、unset()何かを に設定するのと同じと見なされると思われるものを使用できますundefined

于 2013-07-01T06:54:04.703 に答える
0

undefined存在しないプロパティ/変数にアクセスしようとしたときに Javascript で取得する値です。通常、何かをに設定することはありませんundefined

PHP にはこのメカニズムがありません。存在しないプロパティや変数にアクセスしようとすると、レベルのエラーが発生しますE_NOTICE。スクリプトは続行されますが、存在しない変数の値は に置き換えられnullます。

Javascript では、変数にアクセスして、それを取得できるかどうかをテストしますundefined
PHP ではisset($var)、変数にアクセスする前に変数が存在するかどうかをテストするために使用します。

于 2013-07-01T07:03:00.333 に答える
0

いいえ。実際には値ではない「unset」のみがあります。

于 2013-07-01T06:51:58.220 に答える