JavaScript của 'nghiêm ngặt không bằng' nhà điều hành ( !==
) trên so với undefined
không không gây ra false
trên null
các giá trị.
var createTouch = null;
isTouch = createTouch !== undefined
Để đạt được một hành vi tương đương trong PHP, bạn có thể kiểm tra xem tên biến có tồn tại trong các khóa của kết quả của get_defined_vars()
.
const BR = '<br>' . PHP_EOL;
$test = 1;
function test()
{
echo '$test ' . ( array_key_exists('test', get_defined_vars())
? 'exists.' : 'does not exist.' ) . BR;
$test = null;
echo '$test ' . ( array_key_exists('test', get_defined_vars())
? 'exists.' : 'does not exist.' ) . BR;
$test = 1;
echo '$test ' . ( array_key_exists('test', get_defined_vars())
? 'exists.' : 'does not exist.' ) . BR;
unset($test);
echo '$test ' . ( array_key_exists('test', get_defined_vars())
? 'exists.' : 'does not exist.') . BR;
}
test();
Trong hầu hết các trường hợp, isset($variable)
là thích hợp. Đó là tương đương với array_key_exists('variable', get_defined_vars()) && null !== $variable
. Nếu bạn chỉ sử dụng null !== $variable
mà không kiểm tra trước sự tồn tại, bạn sẽ làm lộn xộn nhật ký của mình với các cảnh báo vì đó là nỗ lực đọc giá trị của một biến không xác định.
Tuy nhiên, bạn có thể áp dụng một biến không xác định cho một tham chiếu mà không có bất kỳ cảnh báo nào:
function my_isset(&$var)
{
return null === $var;
}
$is_set = my_isset($undefined_variable);