为什么用
大家平时在赋值数组的值给变量时是不是这么写的呢
示例1
$arr = array(
'test1' => 'a',
'test2' => 'b',
'test3' => 'c',
'test4' => 'd',
'test5' => 'e',
);
$test1 = $arr['test1'];
$test2 = $arr['test2'];
$test3 = $arr['test3'];
$test4 = $arr['test4'];
$test5 = $arr['test5'];
示例2
$str = '肥宅_2020_05_06';
$arr = explode('_', $str);
$name = $arr[0];
$year = $arr[1];
$month = $arr[2];
$day = $arr[3];
这种写法可以看到是很长,今天推荐一个很好用的语法 list()
怎么用
先给上官方链接: https://www.php.net/list
示例2用了该语法就可以这么写
$str = '肥宅_2020_05_06';
list($name, $year, $month, $day) = explode('_', $str);
那示例1需要怎么写呢,在PHP版本7.1之前是不支持这样赋值的.
如果是PHP7.1之后需要这么写
$arr = array(
'test1' => 'a',
'test2' => 'b',
'test3' => 'c',
'test4' => 'd',
'test5' => 'e',
);
['test1' => $test1, 'test2' => $test2, 'test3' => $test3, 'test4' => $test4, 'test5' => $test5] = $arr;
在PHP7.1以上,其实是可以用数组代替list取值,因此示例2还可以这么写:
$str = '肥宅_2020_05_06';
[$name, $year, $month, $day] = explode('_', $str);
那么官方文档里的 PHP 5 里,list() 从最右边的参数开始赋值; PHP 7 里,list() 从最左边的参数开始赋值。
是什么意思呢
同一段代码
$test = array(2=>'apple',1=>'banana',0=>'pear');
list($t[0],$t[1],$t[2]) = $test;
在PHP5输出以下内容
array(3) { [2]=> string(5) "apple" [1]=> string(6) "banana" [0]=> string(4) "pear" }
在PHP7输出以下内容
array(3) { [0]=> string(4) "pear" [1]=> string(6) "banana" [2]=> string(5) "apple" }