php7不再把十六进制当数字,php7 参数、整形及字符串处理机制修改实例分析
php7 参数、整形及字符串处理机制修改实例分析,字符,字符串,参数,数字,报错
php7 参数、整形及字符串处理机制修改实例分析
易采站长站,站长之家为您整理了php7 参数、整形及字符串处理机制修改实例分析的相关内容。
本文实例讲述了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
三、左位移如果超出位数返回0var_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常用函数与技巧总结》、《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。以上就是关于对php7 参数、整形及字符串处理机制修改实例分析的详细介绍。欢迎大家对php7 参数、整形及字符串处理机制修改实例分析内容提出宝贵意见
php7不再把十六进制当数字,php7 参数、整形及字符串处理机制修改实例分析相关推荐
- php7 字符串,php7 参数、整形及字符串处理机制修改实例分析
本文实例讲述了php7 参数.整形及字符串处理机制修改.分享给大家供大家参考,具体如下: 参数处理机制修改 一.重复参数命名不再支持. 重复的参数命名不再支持.比如下面的代码执行的时候会报错: pub ...
- Python @property装饰器的用法,判断函数参数整形、字符串、取值范围
如果我们对所赋的值有一定的限制,比如要求名字必须是字符串,年龄必须是数字,否则会对方法的调用造成影响,这个时候单纯的赋值就不能满足这样的过滤效果了.既然是条件过滤,那么这几条代码就需要放在方法里,所以 ...
- php扩展兼容,PHP扩展迁移为PHP7扩展兼容性问题记录,php7兼容性_PHP教程
PHP扩展迁移为PHP7扩展兼容性问题记录,php7兼容性 PHP7扩展编写的时候,提供的一些内核方法和之前的PHP之前的版本并不能完全兼容.有不少方法参数做了调整.下面是在迁移过程中遇到的一些问题. ...
- php7扩展开发教程,Linux下PHP7扩展开发入门教程1:扩展开发流程
本文将会基于PHP7开发一个最简单的扩展,随便取个名learn_ext,编译生成一个learn_ext.so文件,最终调用可以在php中调用learn_ext扩展中的函数来输出一个hello worl ...
- pandas使用read_csv读取文件数据、设置converters参数将百分比字符串转换为数字
pandas使用read_csv读取文件数据.设置converters参数将百分比字符串转换为数字 目录 pandas使用read_csv读取文件数据.设置converters参数将百分比字符串转换为 ...
- php7.0康乐安装_Linux环境PHP7.0安装
PHP7和HHVM比较 PHP7的在真实场景的性能确实已经和HHVM相当, 在一些场景甚至超过了HHVM.HHVM的运维复杂, 是多线程模型, 这就代表着如果一个线程导致crash了, 那么整个服务就 ...
- LeetCode 1271. 十六进制魔术数字(进制转换)
1. 题目 你有一个十进制数字,请按照此规则将它变成「十六进制魔术数字」:首先将它变成字母大写的十六进制字符串,然后将所有的数字 0 变成字母 O ,将数字 1 变成字母 I . 如果一个数字在转换后 ...
- php7.1安装mysqli扩展,centos php7 安装mysqli扩展心得
在新配服务器时发现,php无法连接到mysql.通过phpinfo发现.根本没有显示mysqli的相关配置.经过一系列研究.总结了下.: 第一步: 在phpinfo里没有mysqli配置,原因是安装p ...
- laravel5.5 php7,ubuntu 16.04+nginx+mysql+php7.1+laravel5.5环境
一.安装php7.1 #添加php源 sudo add-apt-repository ppa:ondrej/php #更新apt数据,载入php源数据 sudo apt update #安装php-f ...
最新文章
- 如何读取Excel表格中不同sheet表的同一位置单元格数据,并绘制条形图呢?
- NGUI创建Camera参数为Simple 2D的UI UI对象的结构UI Root(2D)
- chrome 插件开发心得
- 从零开始搭建spring-cloud(5) ----config
- PyTorch如何加速数据并行训练?分布式秘籍大揭秘
- Java的反射(二)
- spring扩展点一:BeanDefinitionRegistryPostProcessor
- linux下槽函数的响应时间,Qt信号与槽之connectSlotsByName函数
- DSP28335定时器
- Bullzip PDF Printer 打印机驱动安装失败解决
- 【月伴流星】Windows7 SP1_x86/x64多合一安装版2019.08
- 图片背景处理技巧快来学学
- Handler sync barrier(同步屏障)
- 全网首份pyQt6飞机大战
- 荣耀8X成为全球首款通过TUV莱茵低蓝光认证的手机
- windows10家庭版修改中文用户名完美解决
- 北京语言大学计算机英语统考,大学英语b级复习资料_统考英语b题库|北语网院大学英语b辅导...
- 机器人被挠脚心_《fm及机器人系列(tk)》专题
- 个人项目记录 -- VChat
- Echarts3.0引入百度地图-简单说