isset检查变量is set and not null是否。所以是的,如果你检查的变量的值是null,它将返回false。事实上,不可能区分一个 * 不存在 * 的变量和一个包含null的变量。人们会为此提出各种各样的解决方案,但没有一个是100%有效的。在PHP中,你不能区分这两种情况,句号。 请注意,您可以使用更专门的方法来找出array keys或object properties的差异,这没有问题。但普通变量是无法区分的。 话虽如此,你真的不应该进入一个情况下,你需要这种区别无论如何。如果你正确地初始化你的变量,你就不需要检查它们是否被 * 设置 *。你完全控制程序中的所有变量,你可以绝对确保它们在应该存在的时候存在,所以你不需要检查。如果PHP然后抱怨不存在的变量,你知道你有一个错误,你可以修复。所有你不能控制的输入都应该以数组或对象的形式出现,你可以详细检查并区分null和不存在的键。 请参见The Definitive Guide To PHP's isset And empty。
3条答案
按热度按时间yws3nbqq1#
isset
检查变量is set and notnull
是否。所以是的,如果你检查的变量的值是null
,它将返回false
。事实上,不可能区分一个 * 不存在 * 的变量和一个包含null
的变量。人们会为此提出各种各样的解决方案,但没有一个是100%有效的。在PHP中,你不能区分这两种情况,句号。请注意,您可以使用更专门的方法来找出array keys或object properties的差异,这没有问题。但普通变量是无法区分的。
话虽如此,你真的不应该进入一个情况下,你需要这种区别无论如何。如果你正确地初始化你的变量,你就不需要检查它们是否被 * 设置 *。你完全控制程序中的所有变量,你可以绝对确保它们在应该存在的时候存在,所以你不需要检查。如果PHP然后抱怨不存在的变量,你知道你有一个错误,你可以修复。所有你不能控制的输入都应该以数组或对象的形式出现,你可以详细检查并区分
null
和不存在的键。请参见The Definitive Guide To PHP's isset And empty。
6yt4nkrj2#
我找到了一种方法来解决它,但它似乎丑陋,
3hvapo4f3#
使用array_key_exists()
数组键存在
(PHP 4 >= 4.0.7,PHP 5,PHP 7,PHP 8)array_key_exists -检查给定的键或索引是否存在于数组中
描述¶
array_key_exists(string| int $key,array $array):bool array_key_exists()返回true如果给定的键在数组中设置。key可以是数组索引的任何可能值。