请注意,对字符串使用增量/减量运算符是合法的
<?php
$str = "";
echo ++$str; // 输出:1
?>
当使用期望数字的运算符(+
-
*
/
**
%
<<
>>
|
&
^
)或其赋值等价物强制转换无效字符串时,引入了新的E_WARNING
和 E_NOTICE
错误。如果字符串以数值开头但包含尾随的非数值字符,则会发出E_NOTICE
;如果字符串不包含数值,则会发出E_WARNING
。
<?php
'1b' + 'something';
上面的例子将输出
Notice: A non well formed numeric value encountered in %s on line %d Warning: A non-numeric value encountered in %s on line %d
以前,3 字节八进制字符串转义序列会静默溢出。现在,它们仍然会溢出,但会发出E_WARNING
。
<?php
var_dump("\500");
上面的例子将输出
Warning: Octal escape sequence overflow \500 is greater than \377 in %s on line %d string(1) "@"
$this
的不一致性修复虽然$this
在 PHP 中被认为是一个特殊变量,但它缺乏适当的检查以确保它不被用作变量名或重新赋值。现在已对其进行了修正,以确保$this
不能是用户定义的变量,不能重新赋值为不同的值,也不能被全局化。
会话 ID 将不再在生成时进行哈希处理。此更改带来了以下四个 ini 设置的移除:
session.entropy_file
session.entropy_length
session.hash_function
session.hash_bits_per_character
并添加了以下两个 ini 设置:
session.sid_length
- 定义会话 ID 的长度,默认为 32 个字符,以确保向后兼容)
session.sid_bits_per_character
- 定义每个字符要存储的位数(即增加会话 ID 中可使用的字符范围),默认为 4,以确保向后兼容
precision
如果该值设置为 -1,则使用 dtoa 模式 0。默认值仍然是 14。
serialize_precision
如果该值设置为 -1,则使用 dtoa 模式 0。现在默认使用值 -1。
gd.jpeg_ignore_warning
此 php.ini 设置的默认值已更改为 1,因此默认情况下会忽略 libjpeg 警告。
opcache.enable_cli
此 php.ini 设置的默认值在 PHP 7.1.2 中已更改为 1(启用),在 PHP 7.1.7 中又更改回 0(禁用)。
会话 ID 现在将仅使用 CSPRNG 生成。