了解这些PHP小技巧吗?

1. $_POST并非是HTTP POST过来的数据, 如json格式的数据就没法接受,这是因为由于历史原因,php只能解析Content-Type为 application/x-www-form-urlencoded 或 multipart/form-data的Http请求,只不过现在json流行了,如下处理即可:

$_POST = json_decode(file_get_contents('php://input'), true);
print_r($_POST);

2.isset()函数是用来检测变量是否设置,但是如果变量值是NULL时也返回false。 这可能跟你的本意相反了,如下解决:

[代码]php代码:

$a = null;
 
echo isset($a);  //false
 
//下面是更可靠的检测方式
echo array_key_exists('a', get_defined_vars());  //true

3.如何更有效的检测字符串长度。 一般strlen函数执行起来相当快,因为它不做任何计算,只返回在zval结构(C的内置数据结构,用于存储PHP变量)中存储的已知字符串长度。但是,由于strlen()是函数,多多少少会有些慢,因为函数调用会经过诸多步骤,如字母小写化(译注:指函数名小写化,PHP不区分函数名大小写)、哈希查找,会跟随被调用的函数一起执行。在某些情况下,你可以使用isset()技巧加速执行你的代码。

[代码]php代码:

if (strlen($foo) < 5) { echo “Foo is too short”$$ }
 
//与下面进行比较
if (!isset($foo{5})) { echo “Foo is too short”$$ }

调用isset()恰巧比strlen()快,因为与后者不同的是,isset()作为一种语言结构,意味着它的执行不需要函数查找和字母小写化。也就是说,实际上在检验字符串长度的顶层代码中你没有花太多开销。

原文发布于微信公众号 - php(phpdaily)

原文发表时间:2016-05-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python爬虫与数据挖掘

一篇文章助你理解Python3中字符串编码问题

前几天给大家介绍了unicode编码和utf-8编码的理论知识,以及Python2中字符串编码问题,没来得及上车的小伙伴们可以戳这篇文章:浅谈unicode编码...

882
来自专栏恰同学骚年

你必须知道的指针基础-6.内存的初始化及结构体的使用

  当我们创建一个内存区域的时候,内存中的数据可能是乱七八糟的(可能是其他代码用过后遗留的数据),如下面一段代码:

732
来自专栏PHP在线

了解这些PHP小技巧吗?

1. $_POST并非是HTTP POST过来的数据, 如json格式的数据就没法接受,这是因为由于历史原因,php只能解析Content-Type为 appl...

2615
来自专栏云飞学编程

Python基础之常用格式化输出字符详解

写代码的时候经常会遇到使用格式化字符的情况,这里将常用的三种情况:%s、%d和%f 用代码给大家详细说明下:

911
来自专栏Micro_awake web

vue的计算属性computed和监听器watch

823
来自专栏好好学java的技术栈

并发基础(三): java线程优先级小试牛刀

1052
来自专栏破晓之歌

python中的内置函数(双下划线) 原

如果我们是直接执行某个.py文件的时候,该文件中那么”__name__ == '__main__'“是True,但是我们如果从另外一个.py文件通过import...

1742
来自专栏待你如初见

Java多线程

793
来自专栏我和PYTHON有个约会

16.pass关键字

在项目开发的过程中,某些情况下,我们定义了函数,但是对于函数中具体的代码临时没有确定,如:

883
来自专栏河湾欢儿的专栏

全局对象

1003

扫码关注云+社区