Änderungen durch PHP7
1. Änderungen am String-Verarbeitungsmechanismus
含有十六进制字符的字符串不再视为数字, 也不再区别对待.
var_dump("0x123" == "291"); // false var_dump(is_numeric("0x123")); // false var_dump("0xe" + "0x1"); // 0 var_dump(substr("f00", "0x1")) // foo
2. Änderung des Ganzzahlverarbeitungsmechanismus
Int64支持, 统一不同平台下的整型长度, 字符串和文件上传都支持大于2GB. 64位PHP7字符串长度可以超过2^31次方字节.
// 无效的八进制数字(包含大于7的数字)会报编译错误 $i = 0681; // 老版本php会把无效数字忽略。 // 位移负的位置会产生异常 var_dump(1 >> -1); // 左位移超出位数则返回0 var_dump(1 << 64);// 0 // 右位移超出会返回0或者-1 var_dump(100 >> 32);// 0 var_dump(-100 >> 32);// -1
3
不支持重复参数命名
Funktion func(b, c) {}; ein Fehler wird gemeldet
func_get_arg()和func_get_args()这两个方法返回参数当前的值, 而不是传入时的值, 当前的值有可能会被修改
also Sie Beachten Sie, dass es am besten ist, es in der ersten Zeile der Funktion aufzuzeichnen. Andernfalls wird es bei späteren Änderungen nicht mehr der Anfangswert sein, der beim erneuten Lesen übergeben wird.
function foo($x) { $x++; echo func_get_arg(0); } foo(1); //返回2
4.für jede Änderung
foreach()循环对数组内部指针不再起作用
$arr = [1,2,3]; foreach ($arr as &$val) { echo current($arr);// php7 全返回0 }
按照值进行循环的时候, foreach是对该数组的拷贝操作
$arr = [1,2,3]; foreach ($arr as $val) { unset($arr[1]); }var_dump($arr);
Das neueste PHP7 wird weiterhin ausgedruckt [1,2,3]. (ps: 7.0.0 funktioniert nicht)
Das alte druckt [1,3] aus
按照引用进行循环的时候, 对数组的修改会影响循环
$arr = [1]; foreach ($arr as $val) { var_dump($val); $arr[1]=2; }
Das neueste PHP7 fügt immer noch eine Schleife von neu hinzu Elemente. (ps: 7.0.0 wird nicht funktionieren)
5. Listenänderung
不再按照相反的顺序赋值
//$arr wird [1, 2 ,3] anstelle des vorherigen [3,2,1]
list($arr[], $arr[], $arr[]) = [1,2,3];
不再支持字符串拆分功能
// $x = null 并且 $y = null $str = 'xy'; list($x, $y) = $str;
空的list()赋值不再允许
list() = [123];
list()现在也适用于数组对象
list($a, $b) = (object)new ArrayObject([0, 1]);
6. Änderung des variablen Verarbeitungsmechanismus
对变量、属性和方法的间接调用现在将严格遵循从左到右的顺序来解析,而不是之前的混杂着几个特殊案例的情况。 下面这张表说明了这个解析顺序的变化。
引用赋值时自动创建的数组元素或者对象属性顺序和以前不同了
$arr = []; $arr['a'] = &$arr['b'];$arr['b'] = 1; // php7: ['a' => 1, 'b' => 1] // php5: ['b' => 1, 'a' => 1]
7. Verschiedenes
1.debug_zval_dump() gibt jetzt „int“ statt „long“ aus, gibt „float“ statt „double“ aus
2.dirname() hinzugefügt optional Der zweite Parameter, Tiefe, ruft den Namen des übergeordneten Verzeichnisses ab, eine Tiefenebene höher als das aktuelle Verzeichnis.
3.getrusage() unterstützt jetzt die Funktionen Windows.mktime() und gmmktime() akzeptieren den Parameter is_dst nicht mehr.
4. Die Funktion preg_replace() unterstützt nicht mehr „e“ (PREG_REPLACE_EVAL).
5.setlocale()-Funktion akzeptiert keine Kategorie-Eingabezeichenfolge mehr. Es sollten die LC_*-Konstanten verwendet werden.
6.exec(), system() und passhru() haben Schutz für NULL hinzugefügt.
7.shmop_open() gibt jetzt eine Ressource anstelle eines int zurück. Diese Ressource kann sein übergeben an shmop_size(), shmop_write(), shmop_read(), shmop_close() und shmop_delete().
8. Um Speicherlecks zu vermeiden, erfordert xml_set_object() jetzt das manuelle Löschen von $parse am Ende der Ausführung .
9.curl_setopt-Einstellungselement CURLOPT_SAFE_UPLOAD ändert sich
TRUE deaktiviert das @-Präfix zum Senden von Dateien in CURLOPT_POSTFIELDS. Dies bedeutet, dass @ sicher in Feldern verwendet werden kann. CURLFile kann als Upload-Alternative verwendet werden.
In PHP 5.5.0 hinzugefügt, der Standardwert ist FALSE. PHP 5.6.0 ändert den Standardwert auf TRUE. . PHP 7 hat diese Option entfernt und zum Hochladen von Dateien muss die CURLFile-Schnittstelle verwendet werden.
Empfohlenes Tutorial: „PHP7-Tutorial“
Das obige ist der detaillierte Inhalt vonNeue Funktionen von PHP7: Änderungen, die PHP7 mit sich bringt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!