php 中的each()和list()

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 1

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

array
  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)
发布了36 篇原创文章 · 获赞 3 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/tyro_blog/article/details/49128891