The break
and continue
statements no longer accept variable arguments (e.g., break 1 + foo() * $bar;).
Static arguments still work, such as break 2;. As a side effect of this change
break 0; and continue 0; are no longer allowed.
In the date and time extension, the timezone can no longer be
set using the TZ environment variable. Instead you have to specify a timezone using the
date.timezonephp.ini option or date_default_timezone_set()
function. PHP will no longer attempt to guess the timezone, and will instead fall back to "UTC" and issue
a E_WARNING.
Non-numeric string offsets - e.g. $a['foo'] where $a is a string - now return
false on isset() and true on empty(), and produce a E_WARNING
if you try to use them. Offsets of types double, bool and null produce a E_NOTICE. Numeric strings
(e.g. $a['2']) still work as before. Note that offsets like '12.3'
and '5 foobar' are considered non-numeric and produce a E_WARNING, but are converted
to 12 and 5 respectively, for backward compatibility reasons.
Note: Following code returns different result.
$str='abc';var_dump(isset($str['x'])); // false for PHP 5.4 or later, but true for 5.3 or less
Converting an array to a string will now generate an E_NOTICE level
error, but the result of the cast will still be the string "Array".
Turning NULL, FALSE, or an empty string into an object by adding a property
will now emit an E_WARNING level error, instead of E_STRICT.
Parameter names that shadow super globals now cause a fatal error. This prohibits code like
function foo($_GET, $_POST) {}.
array_combine() now returns array() instead of FALSE
when two empty arrays are provided as parameters.
If you use htmlentities() with asian character sets, it
works like htmlspecialchars() - this has always been the
case in previous versions of PHP, but now an E_STRICT
level error is emitted.
The third parameter of ob_start() has changed from
booleanerase to integerflags. Note that code that explicitly set
erase to FALSE will no longer behave as expected
in PHP 5.4: please follow
this example to write
code that is compatible with PHP 5.3 and 5.4.
The following keywords are now reserved, and may not be used
as names by functions, classes, etc.