了解这些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。 这可能跟你的本意相反了,如下解决:

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

echo array_key_exists('a', get_defined_vars()); //true

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

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

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

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

原文发表时间:2015-06-10

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏达摩兵的技术空间

固定宽高比例盒模型实现方案

常规布局中,我们经常会遇到百分比布局的方式,也经常会遇到宽度与高度都设置百分比的情况,但高度值我们一般很少用百分比。尤其在百分比布局中,可能很多布局你是宽度百分...

622
来自专栏CaiRui

GET/POST/g和钩子函数(hook)

GET请求和POST请求: 1. get请求: * 使用场景:如果只对服务器获取数据,并没有对服务器产生任何影响,那么这时候使用get请求。 *...

18110
来自专栏Web 开发

使用jQuery操作data-attr的注意事项

data-attr是HTML5里面的一个新属性(其实这东西都好多年了),方便CSS\JS去读取DOM上面的属性值。

580
来自专栏数据处理

tensorflow动态加载文件

1844
来自专栏编程

python学习内建模块

介绍python的几个內建模块 1 python的时间模块datetime 取现在时间 ? 将指定日期转化为时间戳 ? 将时间戳转化为日期 根据时间戳转化为本地...

1908
来自专栏极客编程

ionic之AngularJS扩展2 移动开发

可能你没有注意过,HTML中常用的script标签在AngularJS中被重新定义了: 除了原来的脚本声明功能之外,如果script元素的type属性 定义为t...

762
来自专栏Theo Tsao

Angular学习笔记(一)

Angular 应用是模块化的,并且 Angular 有自己的模块系统,它被称为 Angular 模块 或 NgModules。 Angular 模块都是一个带...

972
来自专栏Java帮帮-微信公众号-技术文章全总结

SpringMVC Controller单例和多例

SpringMVC Controller单例和多例 对于SpringMVC Controller单例和多例,下面举了个例子说明下. 第一次:类是多例,一个普通属...

4088
来自专栏蛋未明的专栏

PHP分割两个数组的相同元素和不同元素的两种方法

1784
来自专栏网络

玩转 React 服务器端渲染

【编者按】React 生态提供了很多选择方案,这里我们选用 Redux 和 react-router 来做说 React 提供了两个方法renderToStri...

2128

扫描关注云+社区