null 型は、PHP の unit 型 (意味のある情報を持たないことを示す型) です。 つまり、単一の値 null しか持ちません。

未定義、そして unset() された値は、値 null に解決されます。


null 型の値は一つだけで、 大文字小文字を区別しない定数 null です。


null へのキャスト


この機能は PHP 7.2.0 で 非推奨 になり、PHP 8.0.0 で 削除 されました。この機能に頼らないことを強く推奨します。

(unset) $var を使って変数を null にキャストすると、その変数を削除したり値の設定を解除したりは しません。単に null 値を返すだけです。

add a note

User Contributed Notes 6 notes

12 years ago
Note: empty array is converted to null by non-strict equal '==' comparison. Use is_null() or '===' if there is possible of getting empty array.

$a = array();

$a == null <== return true
$a === null < == return false
is_null($a) <== return false
Hayley Watson
5 years ago
NULL is supposed to indicate the absence of a value, rather than being thought of as a value itself. It's the empty slot, it's the missing information, it's the unanswered question. It's not a jumped-up zero or empty set.

This is why a variable containing a NULL is considered to be unset: it doesn't have a value. Setting a variable to NULL is telling it to forget its value without providing a replacement value to remember instead. The variable remains so that you can give it a proper value to remember later; this is especially important when the variable is an array element or object property.

It's a bit of semantic awkwardness to speak of a "null value", but if a variable can exist without having a value, the language and implementation have to have something to represent that situation. Because someone will ask. If only to see if the slot has been filled.
hydrogen at live dot in
2 years ago
I would like to add for clarification that:


// $x is still NULL.
// Decrementing NULL, using Decrement Operator, gives NULL.

// $x is now int(-1).
// This actually decrements value by 1.

On the other hand, Incrementation works simply as expected.
Hope this helps :)
5 years ago
Note: Non Strict Comparison '==' returns bool(true) for

null == 0 <-- returns true

Use Strict Comparison Instead

null === 0 <-- returns false
mattias at kregert dot se
2 years ago
Note that NULL works like a magic object with any attribute you can name, but they are all NULL:

foreach ( [ null, null ] as $person ) {
$friends[] = [ 'Name'=>$person['name'], 'Phone'=>$person['cell'] ];


[0] => Array
[Name] =>
[Phone] =>

[1] => Array
[Name] =>
[Phone] =>


This means that:
* NULL == NULL['foo']['bar']['whatever']

This can be slightly confusing if you accidentally slip a NULL into an array of other items.
2 years ago
Pay attention then using operator -- on NULL values:

$x = null;
--$x; // $x is NULL
$x--; // still NULL
$x -= 1; // $x is -1

On other side for ++ everything works fine:

$x = null;
++$x; // $ix is 1
To Top