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

三、左位移如果超出位数返回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 字符。

实例

printf('%x', IntlChar::CODEPOINT_MAX);

echo IntlChar::charName('@');

var_dump(IntlChar::ispunct('!'));

?>

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

10ffff

COMMERCIAL AT

bool(true)

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/487426.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】成功的背后

转载&#xff1a;来自CSDN第一名博主&#xff1a;http://blog.csdn.net/phphot/article/details/2187505 成功的背后&#xff0c;有着许多不为人知的故事&#xff0c;而正是这些夹杂着泪水和汗水的过去&#xff0c;才成就了一个个走向成功的普通人。 凌晨两点半&#xff0c;早已…

地理信息技术加持 用数字孪生让城市更“聪明”

文章转载自微信公众号中地数码MapGIS&#xff0c;版权归原作者及刊载媒体所有。相关资料表明&#xff0c;过去二十年&#xff0c;中国智慧城市建设投资巨大&#xff0c;建设的传感网络已经领先全球&#xff0c;但硬件重复建设&#xff0c;多注重单方面的智慧化建设&#xff0c;…

php5.3升级5.4,centos php 5.3升级到 php5.4版本

centos php 5.3升级到 php5.4版本发布时间&#xff1a;2020-06-20 06:07:39来源&#xff1a;51CTO阅读&#xff1a;1021作者&#xff1a;kuingfuturephp5.3听说有bug&#xff0c;因此单独升级php5.3相关的版本到5.4具体步骤:下面是我之前的版本之前php版本是:[rootlocalhost ~]…

你所不知道的SQL Server数据库启动过程(用户数据库加载过程的疑难杂症)

转http://www.cnblogs.com/zhijianliutang/p/4100103.html 前言 本篇主要是上一篇文章的补充篇&#xff0c;上一篇我们介绍了SQL Server服务启动过程所遇到的一些问题和解决方法&#xff0c;可点击查看&#xff0c;我们此篇主要介绍的是SQL Server启动过程中关于用户数据库加载…

可持续发展的人工智能

微软亚洲研究院副院长刘铁岩在 WAIC 2020 微软论坛演讲视频来源&#xff1a;微软研究院AI头条可持续发展是一个非常重要的主题&#xff0c;无论是环保、健康、能源和材料&#xff0c;都与人类的生存和发展息息相关。随着工业的发展和科技的进步&#xff0c;我们看到大气、水质、…

php width,PHP imagefontwidth()用法及代码示例

imagefontwidth()函数是PHP中的内置函数&#xff0c;用于获取指定字体中字符的像素宽度。用法:int imagefontwidth( int $font )参数&#xff1a;该函数接受一个包含字体的单个参数$font。对于内置字体&#xff0c;它可以是1、2、3、4、5。对于自定义字体&#xff0c;它可以与i…

Sqring核心概念

Spring 是大规模企业级框架&#xff0c;用户数量多&#xff0c;数据规模大&#xff0c;功能众多&#xff0c;业务复杂&#xff0c; 性能和安全要求高 灵活多变 Spring框架是轻量级的框架&#xff0c;javaEE的春天&#xff0c;当前主流的框架&#xff0c;一站式的企业应用开发…

台积电2纳米获得重大突破

来源&#xff1a;经济日报&#xff08;台&#xff09;台积电冲刺先进制程&#xff0c;在2纳米研发有重大突破&#xff0c;已成功找到路径&#xff0c;将切入GAA&#xff08;环绕闸极&#xff09;技术&#xff0c;为台积电发展鳍式场效电晶体&#xff08;FinFET&#xff09;取得…

php url乱码java接收,java中url乱码解决方法

java中url乱码解决方法&#xff1a;(推荐&#xff1a;java视频教程)1、将字符串转码&#xff1a;newString(“xxxxx”.getBytes(“iso-8859-1”),”utf-8”)这种转码方式有很大的弊端&#xff0c;因为它是使用指定的字符集将此String编码为 byte 序列&#xff0c;并将结果存储到…

腾讯首次发布 AI 白皮书讲了什么?

来源 | 腾讯研究院&#xff08;转载请注明来源&#xff09;编辑 | 蒲蒲近日&#xff0c;在世界人工智能大会腾讯论坛上&#xff0c;腾讯集团副总裁、腾讯研究院院长司晓正式发布了《腾讯人工智能白皮书&#xff1a;泛在智能》&#xff08;以下简称白皮书&#xff09;。作为腾讯…

String, StringBuffer, StringBuilder之间的区别

String与StringBuffer/StringBuilder之间的主要区别 1.String对象不可变, 如果修改会重新创建一个对象, 然后把值保存进去. StringBuffer/StringBuilder对象是可变的. 2.String性能远远低于StringBuffer/StringBuilder 3.StringBuilder速度稍快于StringBuffer, 但与此带来的缺陷…

php代码怎么修改成laravel,Laravel框架实现即点即改功能的方法分析

本文实例讲述了Laravel框架实现即点即改功能的方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;有的时候我们不需要更改大量数据,只需要更改一个字段的时候,我们就用到了即点即改,以用户模块,修改用户名称为例,下图为我的展示模块当我们点击用户名时,会出现一个修改…

人工智能、网络空间对国家核安全的影响

来源&#xff1a;知远战略与防务研究所人工智能技术是一把双刃剑&#xff0c;其在网络空间和核领域的应用&#xff0c;一方面能够为网络安全和核安全提供技术保障&#xff1b;另一方面&#xff0c;人工智能技术也可能为对手所用&#xff0c;通过网络空间对核武器体系进行渗透进…

CF876 F 思维 枚举

给你n个数&#xff0c;问有几个区间满足&#xff0c;区间内或操作大于区间内的任意数。 首先可以知道&#xff0c;两数或操作的结果必定不会小于两者间的最大值&#xff0c;也就是说对于一个区间中&#xff0c;不合法的状态只有两值或相等。那么我们可以考虑枚举每个数&#xf…

java 设置头错误信息,错误:在node.js中发送标头后无法设置标头

我在node.js中写了这个简单的登录代码&#xff1a;var express require ("express");var badyparser require ("body-parser");var app express();app.use(express.static(__dirname "/static"));app.use(badyparser());var users {tom : &…

关注 | 5G 和 WiFi-6,谁是智能制造的主角?

来源&#xff1a;万物智能视界依据不同的情境和需求&#xff0c;结合不同技术的优点&#xff0c;让5G和WiFi-6在工业、物联网、自驾车等领域皆能蓬勃发展&#xff0c;协助产业更进一步朝向智慧化迈进。去年&#xff08;2019年&#xff09;12月&#xff0c;英国的航太设备&#…

[LeetCode] Minimum Depth of Binary Tree

Given a binary tree, find its minimum depth. The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node. 二叉树的最小深度。 使用递归求解&#xff1a; 如果根节点为空&#xff0c;返回0。 如果左节点为空&…

java中table属性,Table边框使用方法及属性大全

一、表格的常用属性基本属性有&#xff1a;width(宽度)、height(高度)、border(边框值)、cellspacing(表格的内宽&#xff0c;即表格与tr之间的间隔)、 cellpadding(表格内元素的间隔&#xff0c;即tr与tr之间的间隔)、bordercolorlight(表格的亮边框颜色)、 bordercolordark(表…

吴恩达推荐笔记:22张图总结深度学习全部知识

来源&#xff5c;Sophia知乎&#xff0c;https://zhuanlan.zhihu.com/p/152362317本文仅用于学术分享&#xff0c;如有侵权&#xff0c;联系后台作删文处理编译&#xff1a;极市平台最近在做笔记查阅内容&#xff0c;觉得这个总结太美观了&#xff0c;真是棒&#xff01;吴恩达…

matlab编程实现二进制树搜索,数据结构: 二进制搜索树(用C语言实现)

有关二叉树的基本知识&#xff0c;请参阅我的博客之一: 二叉树的链式存储说明:二进制排序树是具有以下属性的空树或二进制树:1. 如果左子树不为空&#xff0c;则左子树上所有节点的值均小于其根节点的值;2. 如果右子树不为空&#xff0c;则右子树上所有节点的值都大于其根节点的…