<?php
$fruit = array('a' => 'apple', 'b' => 'banana', 'c' => 'cranberry');reset($fruit);
while (list($key, $val) = each($fruit)) {
    echo "$key => $val\n";
}
?>
结果:
a => apple
b => banana
c => cranberry我想问一下,第一次each()的时候,print_r($fruit)的结果应该是:
Array ( [1] => apple [value] => apple [0] => a [key] => a )
这个时候list($key,$val),我们可以看到这个数组是四个参数,而list本身是2个参数,而且顺序怎么会刚好是a赋给$key,apple赋给$val呢?

解决方案 »

  1.   

    我的意思是
    <?php
    $a=array(1,2,3);
    list($m,$n,$g)=$a;

    ?>
    $m对应1,$n对应2,$n对应3。
    所以就有所疑问,
    按道理来说,上面的$key应该是对应apple,然后$value也对应apple,还多出2个参数。。
      

  2.   

    <?php
    $aa=array("a"=>1,"b"=>2,"c"=>3);
    list($m,$n)=$aa;
    echo $m;
    ?>
    这样的写法也有问题????????????
      

  3.   


    没错就没问题,有错就有问题
    [User:root Time:12:36:15 Path:/home/liangdong/php]$ php list.php 
    PHP Notice:  Undefined offset: 1 in /home/liangdong/php/list.php on line 3Notice: Undefined offset: 1 in /home/liangdong/php/list.php on line 3
    PHP Notice:  Undefined offset: 0 in /home/liangdong/php/list.php on line 3Notice: Undefined offset: 0 in /home/liangdong/php/list.php on line 3
    [User:root Time:12:36:17 Path:/home/liangdong/php]$ 
      

  4.   


    list只吃从0-N的数字索引数组,不是从0开始的不行,中间断开的也不行。
      

  5.   

    Array
    (
        [1] => apple
        [value] => apple
        [0] => a
        [key] => a
    )
    list 只作用于数字索引,因此 $key 取索引为0 的元素,$val取1的元素。有什么不对吗
      

  6.   

    Array ( [1] => apple [value] => apple [0] => a [key] => a )
    按你的意思
    于是会绕过
    [value] => apple和[key] => a
    同时由于第一次出现的是[1],所以也先绕过[1] => apple,寻找到[0] => a
    把它赋给$key后,然后再回来找到[1] => apple,再将apple赋给$value、
      

  7.   

    对。你理解对了。这是list的机制。从0,1......一直找下去。