<?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
