本帖最后由 jy7624991 于 2011-03-12 13:13:26 编辑

解决方案 »

  1.   

    each是从$data中读取一个值,然后指针向下移动一次,如果指针移到最后则返回false  就跳出循环
    list($name,$value)=each($data)是将读取的内容赋值
      

  2.   

    $data是一个数组, each($data)的意思是, 分别一个一个输出数组的元素每次输出一个数, if就判断一次, 执行一次list($key, $value) 是以键值形式将数组转为变量。
      

  3.   

    each() 函数生成一个由数组当前内部指针所指向的元素的键名和键值组成的数组并将指针向下移动一次list($name,$value) 将数组中的值依次赋给list中的变量中当each()的指针移动到结尾则返回false  条件判断就失败从而跳出循环
      

  4.   

    each($data)的意思是, 分别一个一个输出数组的元素每次输出一个数, if就判断一次, 执行一次
    -------------------------------------------------相当于你用 for(i=0; i<4; i++) {}   这个一样, 能自动执行, 自动判断, 直到条件结束,
      

  5.   

    那list($name,$value);中的 $name 是 key 嚒? list();函数也是数组形势嚒? 把each(数组);的值一个一个赋给 list();中的value嚒?
      

  6.   

    list($name,$value)中的$name是$data数组每一行的键值、$value就是值。
    看看手册中的解释比较循序渐进。
      

  7.   

    因为将一个数组赋值给另一个数组时会重置原来的数组指针,因此如果你在while中将数组$data的值赋值给其他数组时,就会导致死循环,因此需要利用list来配合。
    while(list($name,$value)=each($data))
    这句你可以理解为:将$data的值赋值给$value,同时利用list来加上$value的键名,这个键名是按照从0开始进行+1操作的。而PHP中的while则是循环,同时会判断each($data)是否输出完了,如果each($data)没有值了,就相当于if中判断出了false,则会自动跳出循环。至于为什么会这样,这个没什么好解释的了,就好象PHP为什么叫PHP一样,人家开发PHP的就规定这样写,你这样写就对了,所以你是在学习别人开发出来的语言,至于原理实际上也是PHP的开发者直接或间接告诉你的。。我们用就行了,就好象计算机一样,你知道CPU是管运算就OK了,至于他为什么能运算,他里面的电流怎么走就能运算了,如果你不想开发CPU就没必要费那个脑子了。同理,如果你不想开发PHP,而只是做网站那么实在不用再往深了研究了。
      

  8.   

    这样更便于你理解:<?php
    $content="php*asp*.net*java";
    $data=explode("*",$content);
    $i=0;
    while(each($data)){
      echo $data[$i]."<br>";
      $i++;
    }
    ?>
    也是可以遍历数组,并输出$data的值的,结果为:
    php
    asp
    .net
    java但是这样:
    <?php
    $content="php*asp*.net*java";
    $data=explode("*",$content);
    $i=0;
    while (list($name,$value)=each($data)){
      echo "$name=>$val<br>";
    }
    ?>
    同样是输出$data的值,结果为:
    0=>php
    1=>asp
    2=>.net
    3=>java
      

  9.   

    reste($data);
    while(list($name,$value)=each($data))相当于foreach ($data as $name => $value)php优化建议用后者
      

  10.   

    reste($data);
    while(list($name,$value)=each($data))相当于foreach ($data as $name => $value)php优化建议用后者这说的很对。
      

  11.   


    ++
    ls都解释的狠清楚了.要清楚含义,你首先要知道每个函数的作用,以后你有不明的函数,你找个手册,查看一下list和each这两个函数的说明就明白了.只要函数的作用清楚了.那流程也就明白了
      

  12.   

    用foreach 来循环数组比任何一个循环都要快吧~
    foreach里面可以做相应的判断
      

  13.   

    用foreach吧。这种用法在官方手册有说明的<?php
    $fruit = array('a' => 'apple', 'b' => 'banana', 'c' => 'cranberry');
    reset($fruit);
    while (list($key, $val) = each($fruit)) {
        echo "$key => $val\n";
    }
    ?>
      

  14.   

    以上例程会输出:a => apple
    b => banana
    c => cranberry
      

  15.   


    其实这个是利用了php 的动态表达式的特性,也就是表达式其实也是有值的你可以将list($name,$value)=each($data)理解为一个条件,那么就是// 仅作演示
    (bool)(list($name,$value)=each($data))而当each到数组的eof时,会返回一个空值,那么其实相当于list($name,$value) = null, 而这个表单式其实返回的是null,null == false, 所以while就跳出了,至于list是怎么处理null的情况,那和这个while的使用没有太大的关系!