热门文章
PHP函数介...
如何解决Red...
MySQL数据...
Tomcat 与 N...
Nginx 轻松搞...
Nginx额外篇...
Nginx静态资...
ThinkPHP...
PHP 微服务...
linux-window...

php踩过的那些坑

有趣的灵魂 2023-03-21 15:02:43

在日常开发中经常会遇到使用isset()函数检测一个变量是否设置,有什么需要注意的地方,今天一起来讨论一下。


先上代码:

$arr['a'] = NULL;

$arr['b'] = '';

$arr['c'] = 0;

$arr['d'] = 0.0;

$arr['e'] = [];

var_dump(isset($arr['a']));

var_dump(isset($arr['b']));

var_dump(isset($arr['c']));

var_dump(isset($arr['d']));

var_dump(isset($arr['e']));


运行结果是:

bool(falsebool(truebool(truebool(truebool(true)


这里的坑或者疑问是:

isset就是检测一个变量是否设置,那么设置成NULL也叫设置,为啥返回false呢?


如果对isset有疑问,那说明对手册圣经还是没有看透。上手册:

定义:isset — 检测变量是否设置

用法:bool isset ( mixed $var [, mixed $... ] )

检测变量是否设置,并且不是 NULL。

如果 var 存在并且值不是 NULL 则返回 TRUE,否则返回 FALSE。

其实,NULL的含义就是没有值的意思,也就是没有设置值,var_dump(isset($arr['a']));当然返回为false了。


防坑扩展

1 看代码:

$b = 'abcd';

var_dump(isset($b[0]));
var_dump(isset($b['0']));

结果是:

bool(truebool(true)

这个和python的字符串有些像,在使用isset时需要注意一下。


2.如果非得想判断$arr['a’]的值是否为NULL怎么办呢?可以使用 array_key_exists()做判断。

$arr['a'] = NULL;

if(array_key_exists('a', $arr) && $arr['a']===NULL){

     echo '值是NULL';
}


3.NULL不区分大小写,其含义是

NULL 值表示一个变量没有值。NULL 类型唯一可能的值就是 NULL。


在下列情况下一个变量被认为是 NULL:

- 被赋值为 NULL。

- 尚未被赋值。

- 被 unset()。


下面这道题你会选什么? 不妨留言

<?php
$a = '123b';
$b = '12a';

var_dump($a<$b);


请问这段代码的运行结果是:

A、bool(true)

B、bool(false)


最后修改:2023-03-21 15:04:42