了解这些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 条评论
登录 后参与评论

相关文章

来自专栏JAVA高级架构

深入了解 Java 之虚拟机内存

在讨论JVM内存区域分析之前,先来看一下Java程序具体执行的过程: ? Java 程序的执行过程:Java 源代码文件(.Java文件)-> Java Com...

35170
来自专栏Java架构沉思录

Java虚拟机内存初探

Java 程序的执行过程:Java 源代码文件(.Java文件)-> Java Compiler(Java编译器)->Java 字节码文件(.class文件)-...

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

16.pass关键字

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

10730
来自专栏大闲人柴毛毛

三分钟理解“状态模式”——设计模式轻松掌握

什么是状态模式? 一个函数原本有很多判断语句,现在把判断语句中的每一种状态封装成一个类,每一个状态类中均有一个handle()函数,该函数能对当前状态做出处理,...

73970
来自专栏黑泽君的专栏

java基础学习_多线程02_多线程、设计模式_day24总结

9310
来自专栏java思维导图

深入了解Java之虚拟机内存

用来指示程序执行哪一条指令,这跟汇编语言的程序计数器的功能在逻辑上是一样的。JVM规范中规定,如果线程执行的是非native方法,则程序计数器中保存的是当前需要...

9330
来自专栏JavaEdge

虚拟机的类加载机制1 类加载的时机

276100
来自专栏Jimoer

JVM学习记录-类加载的过程

类的整个生命周期的7个阶段是:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(I...

8120
来自专栏我的博客

PHP反射机制

PHP反射机制它是用来导出或提取出关于类、方法、属性(私有保护等属性也能获取)、参数等的详细信息,包括注释。 <?php class Test{ ...

42870
来自专栏PHP在线

了解这些PHP小技巧吗?

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

31260

扫码关注云+社区

领取腾讯云代金券