PHP 7.0.x から PHP 7.1.x への移行
PHP Manual

その他の変更

無効な文字列による算術演算の通知

数値形式ではない文字列を使って、数値を期待する演算 (+ - * / ** % << >> | & ^ や、これらを用いた代入演算) を行おうとしたときに、 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

八進表記のオーバーフロー時の警告

これまでのバージョンでは、八進表記のエスケープシーケンスがオーバーフローを起こしても、 警告は発生しませんでした。 PHP 7.1 以降では、この場合に E_WARNING が発生するようになりました (オーバーフローを起こした場合の振る舞いは、これまでのバージョンと変わりません)。

<?php
var_dump
("\500");

上の例の出力は以下となります。

Warning: Octal escape sequence overflow \500 is greater than \377 in %s on line %d
string(1) "@"

$this の矛盾の修正

PHP において $this は特別な変数という扱いですが、 これが他の場所で変数名として使われていたり再代入されていたりしないことを、 きちんとチェックできていませんでした。 これを修正してきちんとチェックするようになったので、 $this をユーザー定義の変数名として使ったり他の値を再代入したり、 グローバル変数にしたりすることはできなくなりました。

ハッシュなしでのセッション ID の生成

セッション ID の生成時にハッシュされないようになりました。 この変更に伴い、以下の INI 項目が削除されました。

また、以下のふたつの INI 項目が新たに追加されました。


PHP 7.0.x から PHP 7.1.x への移行
PHP Manual