私の仮定の後に、仮定に基づく質問が続きます。
Javascript にはnull
とがありundefined
ます。変数を に設定しnull
て、値がないことを意味するか、 に設定undefined
して、値があるかどうかがわからないことを意味することができます-まったく設定されていません。
PHP には がnull
あり、これまでnull
は Javascript で使用するのと同じ方法で使用してきました。PHPには同等のものがありundefined
ますか?
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;
}
ないと思いますundefined
。undefined
何かがJavaScript の場合と同じかどうかを確認するのではなく、次のようにします。
if(object.property === undefined) // Doesn't exist.
あなたはただ使うisset()
:
if(!isset($something)) // Doesn't exist.
undefined
また、あなたの理解は少し奇妙だと思います。プロパティをに設定するべきではありませんundefined
。これは非論理的です。何かが未定義かどうかを確認したいだけです。つまり、スコープ内のどこにも定義していないことを意味します。isset()
このコンセプトに従います。
そうは言っても、unset()
何かを に設定するのと同じと見なされると思われるものを使用できますundefined
。
undefined
存在しないプロパティ/変数にアクセスしようとしたときに Javascript で取得する値です。通常、何かをに設定することはありませんundefined
。
PHP にはこのメカニズムがありません。存在しないプロパティや変数にアクセスしようとすると、レベルのエラーが発生しますE_NOTICE
。スクリプトは続行されますが、存在しない変数の値は に置き換えられnull
ます。
Javascript では、変数にアクセスして、それを取得できるかどうかをテストしますundefined
。
PHP ではisset($var)
、変数にアクセスする前に変数が存在するかどうかをテストするために使用します。
いいえ。実際には値ではない「unset」のみがあります。