2012-06-22 1 views
8

コードを維持するには、ループの最後で、いくつかの変数がNULLに設定されています。つまり、$var = NULL;です。私がマニュアルで理解しているところから、NULLはPHPコードで比較するためのものとしてほとんど意味されています。 NULLにはタイプがなく、文字列や数字ではないため、意味がありません。PHPの変数にNULLを割り当てる:それは何をしますか?

私は残念なことに例を挙げることはできませんが、私たちのコードではNULL値がファイルに書き込まれていると思います。私の質問は:$varは割り当て後に値を持っていて、出力をエコー/書込みして出力しますか?

EDIT:私はNULL上のPHPマニュアルのエントリを読んだことがあります。これを投稿する必要はありません:http://php.net/manual/en/language.types.null.phpコメントや回答、またはRTMを持っていない私のトップdownvote。ありがとうございました!

+1

マニュアルを私の質問に答える前に、私は実際にそれを読むことを暗示することを意味しています。私はあなたがダウンドーターの一人だと思いますか?ありがとう、たくさんの男。 – toon81

+0

'NULL'の使い方を示す実際の(関連する)コードを追加したいかもしれません。さもなければ、RTMのような回答しか得られません.NULLの使用を理解していないことを指摘しているようです(PHPの場合) – Veger

+2

曖昧で不必要な詳細が含まれています。あなたの仕事についてのものであり、ユースケースについての関連する詳細は不足しています。これは、さまざまな(おそらく)非救済的な答えにつながります。私の下院議員は、マニュアルを読んだり読んだりしていないからではありません(あなたの編集の前にあまり明確ではありませんでしたが)。 – Veger

答えて

1

nullは、PHPの他の値とほとんど同じです(実際には、string、intなどとは異なるデータ型です)。

ただし、重要な違いが1つあります。isset($var)は、varが存在することをチェックし、null以外の値を持ちます。

新しい値を割り当てる前に二度と変数を読み取るために計画している場合、unset()を行うには間違った方法であるが、nullを割り当てること完全​​に罰金です:

php > $a = null; 
php > if($a) echo 'x'; 
php > unset($a); 
php > if($a) echo 'x'; 
Notice: Undefined variable: a in php shell code on line 1 
php > 

あなたが見ることができるように、unset()が実際に変数を削除しますそれは決して存在しなかったのと同じように、nullを特定の値に設定します(必要に応じて変数を作成します)。など

nullの便利なユースケースあなたはそれが提供されたかどうかを知りたい時にデフォルト引数であり、空の文字列、ゼロは、あまりにも、有効です。

PHP手段でのNULL
function foo($bar = null) { 
    if($bar === null) { ... } 
} 
0

変数には値が割り当てられていませんでした。

http://php.net/manual/en/language.types.null.php

+0

私はそれが私の質問ではないことを恐れています。私は投稿する前にRTFMを確実にしていました。:) – toon81

+0

$ other_languageバージョンではなく、英語バージョンのマニュアルにリンクするのがよいでしょう。 – ThiefMaster

+0

@ toon81まあ、マニュアルはあなたの質問に答えているようですが、ヌルの使用を述べていて、 '$ var = NULL'は完全に法的であることさえ示しています – Veger

0

情報のオフに基づいて、提供ヌル実装の目的は、変数をクリアすることであることが表示されます。

PHPで変数を設定解除するには、NULLに設定するか、関数unset()を使用します。

unset()は、指定された変数を破棄します。

関数内のunset()の動作は、 によってどのタイプの変数を破棄しようとしているかによって異なる場合があります。

グローバル化された変数が関数内でunset()されている場合、ローカル変数 だけが破棄されます。呼び出し環境の変数 は、unset()が呼び出される前と同じ値を保持します。

3
[[email protected] ~]$ php -r '$i="foo"; print "ONE\n"; var_dump($i); unset($i); print "TWO\n"; var_dump($i); $i=NULL; print "THREE\n"; var_dump($i); print "\n"; if (isset($i)) print "Set.\n"; if (is_null($i)) print "is_null\n";' 
ONE 
string(3) "foo" 
TWO 
NULL 
THREE 
NULL 
is_null 
[[email protected] ~]$ 

isset()の結果は、ブール値falseになりますが、変数がまだ定義されています。 isset()関数の名前はisnotnull()となります。 :-P

is_null()は、設定されていない値についてもtrueを返します。

yay PHP。

1

変数には値が含まれていないことを示すためにNULLに設定できます。コードの後のある時点で変数がNULLであることがチェックされていれば意味があります。

変数が明示的にNULLに設定され、その変数が使用するメモリを解放する可能性があります。これは、変数が大量のメモリを消費する場合に意味があります(this question参照)。

ドライコードを実行すると、正確な理由を把握できる場合があります。

-1

Nullは、1つの値しか持たない特別なデータ型です。それ自体です。つまり、nullはデータ型だけでなく、キーワードリテラルでもあります。データ型nullの変数は、変数が値なしで作成されたときに値が割り当てられていない変数です。自動的にnullの値が割り当てられます。そのメモリの場所に残っていたゴミがすべて取り除かれたら、プログラムはそれを処理しようとするかもしれません。

関連する問題