相关疑难解决方法(0)

在PHP中测试变量存在的最佳方法; isset()显然已被打破

来自isset()文档:

isset() will return FALSE if testing a variable that has been set to NULL.
Run Code Online (Sandbox Code Playgroud)

基本上,isset()不检查变量是否设置,但是否设置为除了NULL.

鉴于此,实际检查变量是否存在的最佳方法是什么?我尝试过类似的东西:

if(isset($v) || @is_null($v))
Run Code Online (Sandbox Code Playgroud)

(这@是必要的,以避免$v未设置时的警告)但is_null()有一个类似的问题isset():它返回未TRUE设置的变量!它似乎也是:

@($v === NULL)
Run Code Online (Sandbox Code Playgroud)

工作完全一样@is_null($v),所以也是这样.

我们如何可靠地检查PHP中是否存在变量?


编辑:在未设置的变量和设置为的变量之间,PHP显然存在差异NULL:

<?php
$a = array('b' => NULL);
var_dump($a);
Run Code Online (Sandbox Code Playgroud)

PHP显示$a['b']存在,并且具有NULL值.如果你添加:

var_dump(isset($a['b']));
var_dump(isset($a['c']));
Run Code Online (Sandbox Code Playgroud)

你可以看到我正在谈论的isset()功能歧义.以下是所有这三个的输出var_dump()s:

array(1) {
  ["b"]=>
  NULL
}
bool(false)
bool(false)
Run Code Online (Sandbox Code Playgroud)

进一步编辑:两件事.

一,用例.将数组转换为SQL UPDATE语句的数据,其中数组的键是表的列,数组的值是要应用于每列的值.任何表的列都可以保存一个NULL值,通过 …

php variables isset

186
推荐指数
7
解决办法
14万
查看次数

标签 统计

isset ×1

php ×1

variables ×1