Maison > développement back-end > PHP7 > Nouvelles fonctionnalités de php7 : changements apportés par php7

Nouvelles fonctionnalités de php7 : changements apportés par php7

L
Libérer: 2023-02-17 15:32:01
avant
2676 Les gens l'ont consulté

Nouvelles fonctionnalités de php7 : changements apportés par php7

Modifications apportées par PHP7

1. Modifications du mécanisme de traitement des chaînes

含有十六进制字符的字符串不再视为数字, 也不再区别对待.

var_dump("0x123" == "291"); // false
var_dump(is_numeric("0x123")); // false
var_dump("0xe" + "0x1"); // 0
var_dump(substr("f00", "0x1")) // foo
Copier après la connexion

2. Modification du mécanisme de traitement des entiers

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
Copier après la connexion

3.

不支持重复参数命名

function func(b, c) {} ; une erreur sera signalée

func_get_arg()和func_get_args()这两个方法返回参数当前的值, 而不是传入时的值, 当前的值有可能会被修改

donc vous Il faut faire attention, il est préférable de l'enregistrer dans la première ligne de la fonction, sinon s'il y a une modification ultérieure, ce ne sera pas la valeur initiale transmise lors de la relecture.

function foo($x) {
$x++;
echo func_get_arg(0);
}
foo(1); //返回2
Copier après la connexion

4.foreach modification

foreach()循环对数组内部指针不再起作用

$arr = [1,2,3];
foreach ($arr as &$val) {
echo current($arr);// php7 全返回0
}
Copier après la connexion

按照值进行循环的时候, foreach是对该数组的拷贝操作

$arr = [1,2,3];
foreach ($arr as $val) {
unset($arr[1]);
}var_dump($arr);
Copier après la connexion

Le dernier php7 sera toujours imprimé [1,2,3]. (ps : 7.0.0 ne fonctionne pas)
L'ancien affichera [1,3]

按照引用进行循环的时候, 对数组的修改会影响循环

$arr = [1];
foreach ($arr as $val) {
var_dump($val);
$arr[1]=2;
}
Copier après la connexion

Le dernier php7 ajoutera toujours une boucle de nouveau éléments. (ps : 7.0.0 ne fonctionnera pas)

5. modification de la liste

不再按照相反的顺序赋值

//$arr sera [1, 2 ,3] au lieu du précédent [3,2,1]

list($arr[], $arr[], $arr[]) = [1,2,3];
Copier après la connexion

不再支持字符串拆分功能

// $x = null 并且 $y = null
$str = &#39;xy&#39;;
list($x, $y) = $str;
Copier après la connexion

空的list()赋值不再允许

list() = [123];
Copier après la connexion

list()现在也适用于数组对象

list($a, $b) = (object)new ArrayObject([0, 1]);
Copier après la connexion

$arr = [];
$arr[&#39;a&#39;] = &$arr[&#39;b&#39;];$arr[&#39;b&#39;] = 1;
// php7: [&#39;a&#39; => 1, &#39;b&#39; => 1]
// php5: [&#39;b&#39; => 1, &#39;a&#39; => 1]
Copier après la connexion

6. Modification du mécanisme de traitement des variables对变量、属性和方法的间接调用现在将严格遵循从左到右的顺序来解析,而不是之前的混杂着几个特殊案例的情况。 下面这张表说明了这个解析顺序的变化。

Nouvelles fonctionnalités de php7 : changements apportés par php7

引用赋值时自动创建的数组元素或者对象属性顺序和以前不同了

rrreee

7. Divers

1.debug_zval_dump() imprime désormais "int" au lieu de "long", imprime "float" au lieu de "double"

2.dirname() ajouté facultatif Le deuxième paramètre, profondeur, obtient le nom du répertoire parent un niveau de profondeur supérieur à celui du répertoire actuel.

3.getrusage() prend désormais en charge Windows.mktime() et les fonctions gmmktime() n'acceptent plus le paramètre is_dst.

4. La fonction preg_replace() ne prend plus en charge "e" (PREG_REPLACE_EVAL) doit être utilisée à la place.

La fonction 5.setlocale() n'accepte plus la chaîne d'entrée de catégorie. Les constantes LC_* doivent être utilisées.

Les fonctions 6.exec(), system() et passthru() ont ajouté une protection contre NULL.

7.shmop_open() renvoie désormais une ressource au lieu d'un int. passé à shmop_size(), shmop_write(), shmop_read(), shmop_close() et shmop_delete().

8 Pour éviter les fuites de mémoire, xml_set_object() nécessite désormais un effacement manuel de $parse à la fin de l'exécution. .


L'élément de paramètre 9.curl_setopt CURLOPT_SAFE_UPLOAD change

TRUE désactive le préfixe @ pour l'envoi de fichiers dans CURLOPT_POSTFIELDS. Cela signifie que @ peut être utilisé en toute sécurité dans les champs. CURLFile peut être utilisé comme alternative au téléchargement. Ajouté dans PHP 5.5.0, la valeur par défaut est FALSE. PHP 5.6.0 change la valeur par défaut en TRUE. . PHP 7 a supprimé cette option et vous devez utiliser l'interface CURLFile pour télécharger des fichiers.

Tutoriel recommandé : "Tutoriel PHP7"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:csdn.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal