前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >了解这些PHP小技巧吗?

了解这些PHP小技巧吗?

作者头像
wangxl
发布2018-03-08 15:23:20
8820
发布2018-03-08 15:23:20
举报
文章被收录于专栏:PHP在线PHP在线

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

代码语言:javascript
复制
$_POST = json_decode(file_get_contents('php://input'), true);
print_r($_POST);

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

[代码]php代码:

代码语言:javascript
复制
$a = null;
 
echo isset($a);  //false
 
//下面是更可靠的检测方式
echo array_key_exists('a', get_defined_vars());  //true

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

[代码]php代码:

代码语言:javascript
复制
if (strlen($foo) < 5) { echo “Foo is too short”$$ }
 
//与下面进行比较
if (!isset($foo{5})) { echo “Foo is too short”$$ }

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-05-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 php 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • [代码]php代码:
  • [代码]php代码:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档