PHP7部分新特性

<?php
  //1、间接变量,属性和方法引用都按照从左往右的顺序解释
  $foo['a']='b';
  $b='间接变量打印';
  //echo $$foo['a']."\n";  //使用php7.2报如下错误:
                           //PHP Notice:  Array to string conversion in file on line 5
                           //PHP Notice:  Undefined variable: Array in file on line 5
                           //使用php5.6可以正常显示 
  echo ${$foo['a']}."\n";  //php7,php5.6都能正常显示



  //2、global关键字只能引用简单变量
  //global $$foo['a'];    //php7不支持这种写法报错:PHP Parse error:  syntax error, unexpected '[', expecting ',' or ';'
  global ${$foo['a']};    //php5.6,php7均不报错


 
  //3、用括号引起来的变量或者函数不能直接以函数参数的形式传递,函数参数应该是变量。
  function getArr(){
      return [1,2,3,4];
  }
  //$last = array_pop(getArr());  在php5.6下不报错,在php7.2下报错:PHP Notice:  Only variables should be passed by reference
  //下面的方式兼容php5.6,php7都没有错误。
  $arr = getArr();
  $last = array_pop($arr);


  //4、list():
  //         1、空的list()赋值不再允许 
  //         2、list()不在支持字符串拆分功能  
  //         3、list()支持对象赋值功能。
  $a = 123;
  list() = $a;  //php7会报错,php5不会报错
   $str="ab";
   list($a,$b)=$str;//php5会把字符串变成变量赋值给$a,$b。php7返回的全部是null
   echo $a;
   echo $b;


  //5、func_get_arg和func_get_args()调整,func_get_arg()和func_get_args()这两个方法返回参数当前的值,而不是传入时的值。当前的值有可能会被修改 
  function func($x){
      $x++;
      echo func_get_arg(0);
   }
   func(1);  //php5.6打印x的值是1,php7打印的是2

    

   
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值