In früheren Versionen konnte die Funktion
   number_format() -0 zurückgeben. Dies
   ist zwar für Gleitkommazahlen nach dem Standard IEEE-754 durchaus zulässig,
   aber in Bezug auf die Formatierung der Zahlen in einer für den Menschen
   lesbaren Form war diese Eigenart nicht wünschenswert.
  
<?php
var_dump(number_format(-0.01)); // gibt nun string(1) "0" anstelle von string(2) "-0" ausNumerische Schlüssel werden nun besser behandelt, wenn Arrays in Objekte und Objekte in Arrays umgewandelt werden. Dies gilt nicht nur für explizite Umwandlungen, sondern auch für die Verwendung von settype().
Das bedeutet, dass auf die (zeichenkettenartigen) Integer-Schlüssel eines Arrays, das in ein Objekt umgewandelt wird, nun zugegriffen werden kann:
<?php
// Array zu Objekt
$arr = [0 => 1];
$obj = (object) $arr;
var_dump(
    $obj,
    $obj->{'0'}, // nun verfügbar
    $obj->{0} // nun verfügbar
);Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
object(stdClass)#1 (1) {
  ["0"]=>    // nun ein Zeichenketten-Schlüssel anstelle eines Integer-Schlüssels
  int(1)
}
int(1)
int(1)
Genauso kann nun auf die (zeichenkettenartigen) Integer-Schlüssel eines Objekts, das in ein Array umgewandelt wird, zugegriffen werden:
<?php
// object to array
$obj = new class {
    public function __construct()
    {
        $this->{0} = 1;
    }
};
$arr = (array) $obj;
var_dump(
    $arr,
    $arr[0], // nun verfügbar
    $arr['0'] // nun verfügbar
);Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
array(1) {
  [0]=>    // nun ein Integer-Schlüssel anstelle eines Zeichenketten-Schlüssels
  int(1)
}
int(1)
int(1)
null an get_class()
   Bisher wurde bei der Übergabe von null an die Funktion
   get_class() der Name der umschließenden Klasse
   ausgegeben. Dieses Verhalten wurde nun entfernt und es wird stattdessen ein
   Fehler der Stufe E_WARNING ausgegeben. Um das
   beschriebene Verhalten wiederherzustellen, sollte der Parameter einfach
   weggelassen werden.
  
   Wenn versucht wird, nicht zählbare Typen mittels count()
   zu zählen, wird nun ein Fehler der Stufe E_WARNING
   ausgegeben (dies gilt auch für die Alias-Funktion
   sizeof()).
  
<?php
var_dump(
    count(null), // NULL ist nicht zählbar
    count(1), // Integer sind nicht zählbar
    count('abc'), // Zeichenketten sind nicht zählbar
    count(new stdClass), // Objeke, die die Countable-Schnittstelle nicht implementieren, sind nicht zählbar
    count([1,2]) // Arrays sind zählbar
);Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
Warning: count(): Parameter must be an array or an object that implements Countable in %s on line %d Warning: count(): Parameter must be an array or an object that implements Countable in %s on line %d Warning: count(): Parameter must be an array or an object that implements Countable in %s on line %d Warning: count(): Parameter must be an array or an object that implements Countable in %s on line %d int(0) int(1) int(1) int(1) int(2)
Als Teil der langfristigen Umstellung weg von Ressourcen wurde die Erweiterung Hash dahingehend überarbeitet, dass nun Objekte anstelle von Ressourcen verwendet werden. Die Änderung sollte für PHP-Entwickler problemlos vonstatten gehen, mit Ausnahme der Fälle, in denen Überprüfungen mit der Funktion is_resource() durchgeführt werden (diese müssen auf is_object() umgestellt werden).
Folgendes wurde an den Standardeinstellungen geändert:
tls:// ist nun standardmäßig auf TLSv1.0 oder TLSv1.1
     oder TLSv1.2 eingestellt
    
   ssl:// ist nun ein Alias für tls://
    
   STREAM_CRYPTO_METHOD_TLS_*-Konstanten sind nun
     standardmäßig auf TLSv1.0 oder TLSv1.1 + TLSv1.2 eingestellt, statt nur
     auf TLSv1.0
    
   
   Bisher gab gettype() bei einer geschlossenen Ressource
   die Zeichenkette "unknown type" zurück. Nun wird die
   Zeichenkette "resource (closed)" zurückgegeben.
  
   Bisher gab die Funktion is_object() bei der Klasse
   __PHP_Incomplete_Class false zurück. Nun gibt sie
   true zurück.
  
   Unvollständig definierte Referenzen auf undefinierte Konstanten erzeugen
   nun einen Fehler der Stufe E_WARNING (statt
   E_NOTICE). In der nächsten Hauptversion von PHP werden
   sie Error-Exceptions auslösen.
  
Die derzeit niedrigsten offiziell unterstützten Windows-Version sind Windows 7/Server 2008 R2.
Bei Kompatibilitätsprüfungen von Standard-Eigenschaftswerten von Traits werden nun keine Typumwandlungen mehr durchgeführt.
object als Klassenname
   Die Bezeichnung object war in PHP 7.0 bisher weich
   reserviert. Nun ist sie hart reserviert, d. h., sie kann nicht mehr als
   Name für Klassen, Traits oder Schnittstellen verwendet werden.
  
Die Unterstützung für NetWare wurde entfernt.
SORT_STRING
   Während array_unique() mit
   SORT_STRING früher das Array kopiert und nicht
   eindeutige Elemente entfernt hat (ohne das Array anschließend zu packen),
   wird nun ein neues Array erstellt, das aus den eindeutigen Elementen
   besteht. Dies kann zu unterschiedlichen numerischen Indizes führen.
  
   Die Funktion bcmod() reduziert Gleitkommazahlen nicht
   mehr auf Ganzzahlen. Daher entspricht ihr Verhalten nun der Funktion
   fmod() und nicht mehr dem Operator %.
   Zum Beispiel liefert bcmod('4', '3.5') nun
   0.5 anstelle von 1.
  
   Die Funktionen hash_hmac(),
   hash_hmac_file(), hash_pbkdf2() und
   hash_init() (mit HASH_HMAC)
   akzeptieren keine nicht-kryptographischen Hashes mehr.
  
   Wenn bei der Funktion json_decode() der zweite Parameter
   (assoc) null ist, wird nun die Funktionsoption
   JSON_OBJECT_AS_ARRAY verwendet. Zuvor wurde
   JSON_OBJECT_AS_ARRAY immer ignoriert.
  
Die Sequenzen, die von den Funktionen rand() und mt_rand() für einen bestimmten Seed erzeugt werden, können sich auf 64-Bit-Systemen von den in PHP 7.1 erzeugten unterscheiden (aufgrund eines behobenen Modulo-Bias-Fehlers in der Implementierung).
sql.safe_mode entfernt
   Die INI-Einstellung sql.safe_mode wurde entfernt.
  
   Das Element zone des Arrays, das von den Funktionen
   date_parse() und
   date_parse_from_format() zurückgegeben wird, zeigt nun
   Sekunden anstelle von Minuten, und sein Vorzeichen wurde umgedreht. So wird
   zum Beispiel -120 nun zu 7200.
  
Seit PHP 7.2.34 werden die Namen eingehender Cookies aus Sicherheitsgründen nicht mehr URL-dekodiert.
