php7 参数、整形及字符串处理机制修改实例分析


Posted in PHP onMay 25, 2020

本文实例讲述了php7 参数、整形及字符串处理机制修改。分享给大家供大家参考,具体如下:

参数处理机制修改

一、重复参数命名不再支持。

重复的参数命名不再支持。比如下面的代码执行的时候会报错:

public function foo($a, $b, $unused, $unused) {
// ... 
}

编者按:应该没有人这样用吧。

二、func_get_arg和func_get_args()调整

func_get_arg()和func_get_args()这两个方法返回参数当前的值,而不是传入时的值。当前的值有可能会被修改  

function foo($x) {
   $x++;
   var_dump(func_get_arg(0));
}
foo(1);

上面的代码会打印2, 而不是1。如果想打印原始的值,调用的顺序调整下即可。

三、同样在打印异常回溯信息的时候也是显示修改后的值。

function foo($x) {  
 $x = 42;
 throw new Exception; 
} 
foo("string");

PHP7的运行结果:

Stack trace:
#0 file.php(4): foo(42)
#1 {main} 

PHP5的运行结果:

Stack trace:
#0 file.php(4): foo('string')
#1 {main}

这个调整不会影响代码的行为,不过在调试的时候需要注意这个变化。

其他和参数有关的函数都是同样的调整,比如debug_backtrace() .

整型处理机制修改

一、无效八进制数字会报编译错误

无效的八进制数字(包含大于7的数字)会报编译错误,比如下面的代码会报错:     

$i = 0781; // 8 is not a valid octal digit!
[点击并拖拽以移动]

老版本的PHP会把无效的数字忽略。

二、位移负的位置会产生异常

var_dump(1 >> -1); // ArithmeticError: Bit shift by negative number

三、左位移如果超出位数返回0

var_dump(1 << 64); // int(0)

老版本的PHP运行结果和cpu架构有关系。比如x86会返回1。

四、右位移超出会返回0或者-1.

var_dump(1 >> 64); // int(0)
var_dump(-1 >> 64); // int(-1)

字符串处理机制修改

一、含有十六进制字符的字符串不再视为数字

含有十六进制字符的字符串不再视为数字,也不再区别对待。比如下面的代码:

var_dump("0x123" == "291");   // bool(false)   (previously true) 
var_dump(is_numeric("0x123")); // bool(false)   (previously true) 
var_dump("0xe" + "0x1");    // int(0)     (previously 16) 
var_dump(substr("foo", "0x1")); // string(3) "foo" (previously "oo") 
// Notice: A non well formed numeric value encountered

可以使用filter_var函数来检查一个字符串是否包含十六进制字符或者是否可以转成一个整型

$str = "0xffff"; 
$int = filter_var($str, FILTER_VALIDATE_INT, FILTER_FLAG_ALLOW_HEX); 
if (false === $int) {   
throw new Exception("Invalid integer!"); 
}
var_dump($int); // int(65535)

二、\u{后面如果包含非法字符会报错

双引号和heredocs语法里面增加了unicode 码点转义语法,“\u{”后面必须是utf-8字符。如果是非utf-8字符,会报错:

$str = "\u{xyz}"; // Fatal error: Invalid UTF-8 codepoint escape sequence

可以通过对第一个\进行转义来避免这种错误。

$str = "\\u{xyz}"; // Works fine

“\u”后面如果没有{,则没有影响:

$str = "\u202e"; // Works fine

PHP IntlChar()

PHP 7 通过 intl 扩展来支持国际化 (i18n) 和本地化 (l10n) 。此扩展仅仅是对 ICU 库的基础包装,并提供了和 ICU 库类似的方法和特性。

PHP 7 通过新的 IntlChar 类暴露出 ICU 中的 Unicode 字符特性。这个类自身定义了许多静态方法用于操作多字符集的 unicode 字符。

实例

<?php 
printf('%x', IntlChar::CODEPOINT_MAX); 
echo IntlChar::charName('@'); 
var_dump(IntlChar::ispunct('!')); 
?>

以上程序执行输出结果为:

10ffff
COMMERCIAL AT
bool(true)

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
Windows下的PHP5.0详解
Nov 18 PHP
用mysql内存表来代替php session的类
Feb 01 PHP
js限制checkbox勾选的个数以及php获取多个checkbbox的方法深入解析
Jul 18 PHP
PHP引用符&amp;的用法详细解析
Aug 22 PHP
PHP统一页面编码避免乱码问题
Apr 09 PHP
PHP实现GIF图片验证码
Nov 04 PHP
WordPress用户登录框密码的隐藏与部分显示技巧
Dec 31 PHP
简单了解将WordPress中的工具栏移到底部的小技巧
Dec 31 PHP
PHP实现加密文本文件并限制特定页面的存取的效果
Oct 21 PHP
浅谈php中变量的数据类型判断函数
Mar 04 PHP
PHP房贷计算器实例代码,等额本息,等额本金
Apr 01 PHP
PHP回调函数与匿名函数实例详解
Aug 16 PHP
php7 错误处理机制修改实例分析
May 25 #PHP
php7 list()、session及其他模块的修改实例分析
May 25 #PHP
php7 新增功能实例总结
May 25 #PHP
PHP强制转化的形式整理
May 22 #PHP
Yii 框架入口脚本示例分析
May 19 #PHP
Yii 框架使用数据库(databases)的方法示例
May 19 #PHP
PHP7生产环境队列Beanstalkd用法详解
May 19 #PHP
You might like
php结合web uploader插件实现分片上传文件
2016/05/10 PHP
php 提交表单 关闭layer弹窗iframe的实例讲解
2018/08/20 PHP
Laravel实现搜索的时候分页并携带参数
2019/10/15 PHP
极酷的javascirpt,让你随意编辑任何网页
2007/02/25 Javascript
JavaScript动态调整TextArea高度的代码
2010/12/28 Javascript
javascript分页代码(当前页码居中)
2012/09/20 Javascript
JS使用replace()方法和正则表达式进行字符串的搜索与替换实例
2014/04/10 Javascript
jQuery打印指定区域Html页面并自动分页
2014/07/04 Javascript
基于jQuery实现仿百度首页选项卡切换效果
2016/05/29 Javascript
Javascript中的迭代、归并方法详解
2016/06/14 Javascript
JavaScript比较当前时间是否在指定时间段内的方法
2016/08/02 Javascript
深入浅析Vue组件开发
2016/11/25 Javascript
详解微信小程序 相对定位和绝对定位
2017/05/11 Javascript
Python爬虫实现全国失信被执行人名单查询功能示例
2018/05/03 Python
Python 删除整个文本中的空格,并实现按行显示
2018/07/24 Python
Python 字符串换行的多种方式
2018/09/06 Python
python批量下载网站马拉松照片的完整步骤
2018/12/05 Python
python定时检测无响应进程并重启的实例代码
2019/04/22 Python
python面试题之列表声明实例分析
2019/07/08 Python
python实现高斯投影正反算方式
2020/01/17 Python
python 实现单例模式的5种方法
2020/09/23 Python
开发人员所需要知道的HTML5性能分析面面观
2012/07/05 HTML / CSS
澳大利亚便宜隐形眼镜购买网站:QUICKLENS Australia
2018/10/06 全球购物
英国领先的豪华时尚家居网上商店:Amara
2019/08/12 全球购物
工商管理应届生求职信
2013/10/07 职场文书
平民服装店创业计划书
2014/01/17 职场文书
乡村卫生服务一体化管理实施方案
2014/03/30 职场文书
民生工作实施方案
2014/05/31 职场文书
学校春季防火方案
2014/06/08 职场文书
2014班子“三严三实”对照检查材料思想汇报
2014/09/18 职场文书
公安派出所所长四风问题个人对照检查材料
2014/10/04 职场文书
会计求职信怎么写
2015/03/20 职场文书
企业办公室主任岗位职责
2015/04/01 职场文书
《自然之道》读后感3篇
2019/12/17 职场文书
Python卷积神经网络图片分类框架详解分析
2021/11/07 Python
Redis实现短信验证码登录的示例代码
2022/06/14 Redis