php 中的each()和list()

来源:互联网 发布:virtualbox 安装mac 编辑:程序博客网 时间:2024/05/27 01:20

each()函数:

each()函数返回指针指向的当前键值对,并将指针移向下一位;
返回为四个单元的数组;键名为‘1’和‘value’的是键值,键名为‘0’和’key‘的是键名;当指针移除数组末端时返回false;
例:

$a=array('1'=>'你','2'=>'好','3'=>'吗');var_dump(each($a));var_dump(each($a));var_dump(each($a));var_dump(each($a));

返回:

array  1 => string '你' (length=3)  'value' => string '你' (length=3)  0 => int 1  'key' => int 1array  1 => string '好' (length=3)  'value' => string '好' (length=3)  0 => int 2  'key' => int 2array  1 => string '吗' (length=3)  'value' => string '吗' (length=3)  0 => int 3  'key' => int 3  boolean false

以下两种语句输出效果等价:

foreach($prices as $key => $val){    echo $key."-".$value."<br/>";}和while($element = each($prices)){    echo $element['key']."-".$element['value']."<br/>";}

还有一种更高端的方式,设计到接下来分析的list()函数,可以先看一下:

while(list($product,$price) = each($prices)){    echo"$product - $price<br/>";}

list()

list() 函数用数组中的元素为一组变量赋值。list()实际上是一种语言结构和array()一样。
例:

$a=array('a','b','c');list($q,$b,$c)=$a;var_dump($q,$b,$c);

返回

string 'a' (length=1)string 'b' (length=1)string 'c' (length=1)

但是 ,如果你的数组不是默认数字索引数组即键名从0开始的数字时会报错。
例:

// $b=array('q'=>1,'w'=>2,'e'=>3);// list($w,$e,$q)=$b;// var_dump($q,$w,$e);

是错误的。
当数组为数字数组时,但键名不从‘0’开始时,需要空出从‘0’开始的键值。
例:

$a=array('1'=>'你','2'=>'好','3'=>'吗');list( ,$w,$e,$q)=$a;var_dump($q,$w,$e);

返回:

string '吗' (length=3)string '你' (length=3)string '好' (length=3)
0 0
原创粉丝点击