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了。

posted @ 2012-10-25 17:41  风之子_2012  阅读(381)  评论(0编辑  收藏  举报