php list()注意事项
在一个项目中,由于错误使用了list()这个函数,导致了数据错误发生。
参考php.net, 对list介绍如下:
list — 把数组中的值赋给一些变量。 像 array() 一样,这不是真正的函数,而是语言结构。 list() 用一步操作给一组变量进行赋值。
Note:
list() 仅能用于数字索引的数组并假定数字索引从 0 开始。
<?php $info = array('coffee', 'brown', 'caffeine'); list($a[0], $a[1], $a[2]) = $info; var_dump($a); ?>
这个$a的结果是
array(3) { [2]=> string(8) "caffeine" [1]=> string(5) "brown" [0]=> string(6) "coffee" }
不是预计的从左向右依次赋值,原因是: list() 从最右边一个参数开始赋值。
但是当list中参数是3个变量时,代码如下:
$info = array('coffee', 'brown', 'caffeine'); list($a, $b, $c) = $info; var_dump($a, $b, $c); .................................... string(6) "coffee" string(5) "brown" string(8) "caffeine"
$content = "哈哈哈";
$extras = array(); $extras['comment'] = "快来看美女"; $extras['image'] = "http://i3.itc.cn/20121025/a6f_c7e18070_6f10_8085_77e8_e8bbfec264ae_1.jpg"; $extras['url'] = 'http://www.baidu.com'; list($content, $extras) = array('content' => $content, 'extra' => $extras);
此段代码打印出来 $content和$extras变量都没有值,原因是array这个数组带有键值,将代码改成
list($content, $extras) = array($content, $extras);
ok了。