PHP运算符 PHP7新特性
declare(strict_types=1);//declare(strict_types
1. 变量类型声明,可声明函数的参数类型与函数返回值:两种模式: 强制(默认)和严格模式.。可以使用下列类型参数: string,int,float,bool declare(strict_types=1);//declare(strict_types=1),必须放在文件的第一行执行代码,当前文件有效! function add(int $a, int $b): int { return $a+$b; } echo add(2, 3); echo add(1.6, 2.4); ##先输出5;而后报错( Argument 1 passed to add() must be of the type integer, float given) 2. 新增操作符“”:组合比较两个表达式.当$a小于、等于或大于$b时它分别返回-1、0或1。 比较的原则是沿用PHP的常规比较规则进行的。 //整数 echo 1 <=> 1; // 0 echo 1 <=> 2; // -1 echo 2 <=> 1; // 1 //浮点数 echo 1.5 <=> 1.5; // 0 echo 1.5 <=> 2.5; // -1 echo 2.5 <=> 1.5; // 1 //字符串 echo "a" <=> "a"; // 0 echo "a" <=> "b"; // -1 echo "b" <=> "a"; // 1 3. define() 可以定义常量数组: //php7以前 define("ABC", "hello world"); echo ABC;//hello world //PHP7 define('ABCS', [ 'dogs', 'cats', 'birds' ]); echo ABCS[2];//cats 4. use 语句命名空间引进优化:可以使用单个use语句从相同的命名空间导入类,函数和常量,而不是使用多个use语句。 //PHP7之前 use some\namespace\ClassA; use some\namespace\ClassB; use some\namespace\ClassC as C; use const some\namespace\ConstA; use const some\namespace\ConstB; use const some\namespace\ConstC; // PHP7之后 use some\namespace\{ClassA, ClassB, ClassC as C}; use const some\namespace\{ConstA, ConstB, ConstC}; 5. 新增操作符---"??" 。如果变量存在且值不为NULL,它就会返回自身的值,否则返回它的第二个操作数,精简代码量。 //php7以前 if判断 if(empty($_GET['param'])) { $param = 1; }else{ $param = $_GET['param']; } //php7以前 三元运算符 $param = empty($_GET['param']) ? 1 : $_GET['param']; //PHP7 null合并运算符 $param = $_GET['param'] ?? 1;//1 6. 新增加intdiv()函数,接收两个参数,返回值为第一个参数除于第二个参数的值并取整。 echo intdiv(8,4);//2 echo intdiv(10,4);//2 echo intdiv(5,10);//0 7. Unicode:格式化字符串PHP运算符,可以接受任何有效的codepoint。 echo "\u{4f60}"; php7之前:\u{4f60} php7之后:你 8. php7不再循环数组内部的指针 foreach()循环对数组内部指针不再起作用 $arr =[0,1,2]; foreach($arr as &$val){ var_dump(current($arr)); } //php7之前 int(1) int(2) bool(false) //php7之后 int(0) int(0) int(0) 按照值进行循环的时候, foreach是对该数组的拷贝操作 $arr = [1,2,3]; foreach ($arr as $val) { unset($arr[1]); } var_dump($arr); //php7之前 [1,3] //php7之后,(ps:7.0.0不行) [1,2,3] 9. 新增的随机函数:random_bytes( ) 和 random_int( ) 10. a**b,a的b次方 echo 2 ** 3;//8 11. 其他特性: 1 匿名函数,匿名类支持; 2 Error变为可捕获的Exception; 3 一个catch语句块现在可以通过管道字符(|)来实现多个异常的捕获; 4 PHP7.1 以后mcrypt_*序列函数都将被移除。推荐使用:openssl 序列函数; 5 list的修改:不再按照相反的顺序赋值,不再支持字符串拆分功能,空的list()赋值不再允许,list()现在也适用于数组对象 6 不能使用同名的构造函数 7 实例方法不能用静态方法的方式调用 (编辑:武汉站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |