第一种方法:$varname=null 第二种方法:unset($varname) 这两种方法都可以删除变量,但结果有些许的差别。 代码: 代码如下:<?php $a = array( a => a, b => b ); $b = array( a => a, b => b ); $a[b] = null; unset($b[b]); print(<pre>); print_r($a); print(<br />); print_r($b); print(</pre>); ?> 结果: 代码如下:Array ( [a] => a [b] => ) Array ( [a] => a )
有关 PHP 的 empty(),isset() 还有 is_null() 这三个函数的用法讨论得已经很多了,而且很多资料也未必能说得很清楚。这里再重复一次,但不是从概念去说,直接用程序例子来说话,应该记忆会比较深刻些。 测试的类型如下:<?php$a; $b = false; $c = ; $d = 0; $e = null; $f = array();?>empty() 首先是empty的var_dump输出:<?phpvar_dump(empty($a)); var_dump(empty($b)); var_dump(empty($c)); var_dump(empty($d)); var_dump(...
在一个项目中遇到了一个奇怪的问题,耗费了我不少时间都没有解决,最终调试发现是判断的问题—-关于0和 ‘ ‘ (空单引号,为好看清我加了个空格)的判断,我发现 0==” 居然成立,郁闷的同时决定写个简单页面测试,发誓要将0,null,empty,空,false的关系搞的一清二楚。因为这很可能在一些关键地方使我们编写的程序,网站存在bug。特别是可能影响到登陆等特殊地方的安全性和逻辑正确性,虽然这是很基础的知识点,但很多人,包括一些高手...
由于 PHP 的文件系统操作是基于 C 语言的函数的,所以它可能会以您意想不到的方式处理 Null 字符。 Null字符在 C 语言中用于标识字符串结束,一个完整的字符串是从其开头到遇见 Null 字符为止。 以下代码演示了类似的攻击:Example #1 会被 Null 字符问题攻击的代码 代码如下:<?php$file = $_GET['file']; // "../../etc/passwd\0"if (file_exists('/home/wwwrun/'.$file.'.php')) { // file_exists will return true as the fi...
代码如下: 代码如下:<?php$a;$b = false;$c = ;$d = 0;$e = null;$f = array();首先是empty的var_dump输出:boolean trueboolean trueboolean trueboolean trueboolean trueboolean true 然后是is_null的输出:boolean trueboolean falseboolean falseboolean falseboolean trueboolean false 最后是isset的输出:boolean falseboolean trueboolean trueboolean trueboolean falseboolean true由此可见 empty() 可以用来判定所有的数据...
isset和is_null啥区别,看手册上讲的话, isset和is_null的功能几乎完全”相反的一样”..是不是isset就是一个is_null的相反的别名?诶, 要说区别, 那还真的是很多~一切的不同都是因为: is_null是函数, isset是语句.isset是语句, 和echo, print一样, 是PHP本身的一种语言结构.而is_null是函数, 和我们一般的函数一样, 可以做为可变函数调用.你也许会说, 好了,好了,我知道函数和语句的区别, 但到底是TMD什么区别?诶, 所谓语句,语言结构,...
本文实例讲述了PHP处理Json字符串解码返回NULL的解决方法。分享给大家供大家参考之用。具体方法如下: 一般来说,php对json字符串解码使用json_decode()函数,第一个参数传字符串,第二个参数若为true,返回array;若为false,返回object。如果返回NULL,说明报错,输出json_last_error(),得到的整数值对应错误提示。如下图所示:json_last_error()比较常见的是整数4, 是json字符串在json_decode之前已不完整,所以语法错误。 那么一...
今天同事项目中遇到一个问题,通过http接口获取的json字符串使用json_decode始终无法正确解析,返回空白。 直接把结果字符串复制出来手动创建一个变量却正常,在前端js也能解析,搞了半天不得其解,借助强大的谷歌解决了问题,答案是接口吐出的结果包含有BOM头,BOM头这个东西可谓是php的死敌啊 不说了,直接上解决办法:代码如下: if (substr($return, 0,3) == pack("CCC",0xef,0xbb,0xbf)) { $return = substr($return, 3);...
发现问题 在 Laravel 项目中,如果执行了 php artisan config:cache 命令把配置文件缓存起来后,在 Tinker 中(Tinker 是 Laravel 自带的一个交互式命令行界面),使用 env 函数读取环境变量的值为 null,只有执行 php artisan config:clear 清除配置缓存后就可以读取了,这是为什么呢? 一探究竟 打开 .env 文件看,这些都是有值的: APP_ENV=local APP_KEY=base64:JHE5bOkRg283uT0n1Zq/GgvGEer8ooYiB42/wIcCyvo= APP_DEBUG=true ...
今天使用json_encode函数,发现中文竟成了null。 原因分析:使用json_encode函数应应使用utf-8编码,我的页面用的是gbk. 解决:在json_encode函数前使用iconv(gbk,utf8)函数。函数 function gbk2utf8($data) {if(is_array($data)){return array_map(gbk2utf8, $data);}return iconv(gbk,utf-8,$data); }//以下是找的另一种方法 PHP从数据库中得到的字段是中文,想用json_encode()后返回给前台,可是json_encode对中文编码后为null。...
从APP端或从其他页面post,get过来的数据一般因为数组形式。因为数组形式不易传输,所以一般都会转json后再发送。本以为发送方json_encode(),接收方json_decode(),就解决的问题,结果发现,json_decode()后是NULL。 一般会反应是少了一个参数“true”,但是回去看就是 json_decode($data,true); 那怎么还会是NULL呢?难道是编码,不会啊,接收后直接打印是一个完整json字符串的形式,在网上json解析网站,也是可以正常解析的。 那...
在做项目的时候发现在ThinkPHP的模板标签eq中,对于0、null、false的判断是一样的,也就是说如果变量是这三个值的话就无法区分了,搞的我很郁闷,翻了下官方手册没找到,想想不应该呀,又翻了一遍,发现原来还有个heq和nheq标签,官方手册只是提了一下,也没细说,因此很多人可能忽略了,这个标签是用于判断恒等于的,就等于“===”了,这下好了,问题解决。具体使用方法跟eq标签一样, 如下所示: <!--heq标签--><heq name="var" v...
null合并运算符是一个好东西,有了它我们就能很方便的获取一个参数,并能在其为空的情况下提供一个默认值。比如在js中可以用||来搞: function setSomething(a){a = a || some-default-value;// ... }而在PHP中,可惜PHP的||总是返回true或false,无法这样来搞。 PHP7才正式加入了??这个运算符: // 获取user参数的值(如果为空,则用nobody) $username = $_GET[user] ?? nobody; // 等价于: $username = isset($_GET[user]) ? $_G...
isset 判断变量是否已存在 empty 判断变量是否为空或为0 is_null 判断变量是否为NULL 变量emptyis_nullisset$a=””truefalsetrue$a=nulltruetruefalsevar $atruetruefalse$a=array()truefalsetrue$a=falsetruefalsetrue$a=15falsefalsetrue$a=1falsefalsetrue$a=0truefalsetrue$a=”0”truefalsetrue$a=”true”falsefalsetrue$a=”false”falsefalsetrue
is_null, empty, isset, unset 我们先来看看这4个函数的描述。 isset 判断变量是否已存在(配置)unset 把变量删除(释放)掉empty 判断变量是否为空is_null 判断变量是否为NULLok,已经开始搞人了。那么开始,这4个函数中除了unset,其他3个都是判断函数,unset首先出局,因为他不会搞错,其次是is_null,我们可以把它看成是!isset,是isset的一个逆操作,下面一张表可以很清楚的说明他们之间的关系: 代码如下:变量 ...