[已解决]each与list函数,不懂啊!!

[已解决]each与list函数,不懂啊!!

刚刚学习PHP,在书上看到了这两个函数。书上说list和array函数一样,只是只能用数字下标,并且必须从零开始。书上只介绍了array函数,list函数只是提了一下。我用list编了一个php:
<?php
$pe=list("你","好","吗");
        print_r($pe);
?>
提示发生错误了。请问这是为什么???


另外,each函数都看晕了,在网上搜索了半天,也没有合适的答案,简直是一头雾水。在网上看到如下:

each
返回数组中下一个元素的索引及值。
语法: array each(array array);
返回值: 数组
函数种类: 资料处理

内容说明
返回数组为目前数组指针的 索引/值 对。返回的数组有四个元素,依序为 0, 1, 索引, 及值。前述的 0 与 索引 为数组的索引,1 与 值则为数组元素的值。

使用范例

范例一:
<?
$foo = array( "bob", "fred", "jussi", "jouni" );
$bar = each( $foo );
?>
上面的例子,返回数组 $bar 的 索引/值 为
0 => 0
1 => 'bob'
key => 0
value => 'bob'

请问返回的两个0值和两个bob值有什么用,为什么要用两个呢???

范例二:
<?
$foo = array( "Robert" => "Bob", "Seppo" => "Sepi" );
$bar = each( $foo );
?>
这个的例子,返回数组 $bar 的 索引/值 为
0 => 'Robert'
1 => 'Bob'
key => 'Robert'
value => 'Bob'

这个也是那个问题,为什么要返回两个一样的值??

范例三:  
<?php
$people = array("Peter", "Joe", "Glenn", "Cleveland");

reset($people);

while (list($key, $val) = each($people))
  {
  echo "$key => $val<br />";
  }
?>
显示为:
0 => Peter
1 => Joe
2 => Glenn
3 => Cleveland

这个案例中的reset()函数的作用是什么,我删除掉了,结果是一样的,感觉它应该是有作用的。另外while (list($key, $val) = each($people))这个循环语句中的条件不明白,就是while的括号里边的条件list($key, $val) = each($people)不明白是怎么回事??

问题比较多哈,麻烦解答了。。谢谢了。。

[ 本帖最后由 honeyxiaoyi 于 2007-10-6 19:06 编辑 ]

1,list是用来分配变量的,不是像你想的那样可以定义一个变量。
例:
$arr=array(1,2,3)
$list($a,$b,$c)=$arr;
//$a=1;$b=2;$c=3

2,each()
0 => 0
1 => 'bob'

3,
reset ---  设定数组的内部指标到它的第一个元素
key => 0
value => 'bob'

拿你这个each来说,为什么返回两个?
因为:0 => 0这里的第一个"0"是"key"的缩写,=>指向的"0"是key的值
1 => 'bob'这里面"1"是"value"的缩写,=>指向的"bob"才是value的值

还是有问题。。真是麻烦了。。。
版主是保定的啊。。。嘿嘿。。老乡了。
<?
$foo = array( "bob", "fred", "jussi", "jouni" );
$bar = each( $foo );
print_r($bar);
?>
显示为:Array ( [1] => bob [value] => bob [0] => 0 [key] => 0 )
这是不是说each返回4个下标的值,我是说,下标[1]和[value] 的值都为 bob,下标 [0]和 [key]的值都为 0。为什么是两个。。如果是返回4个下标值的话,为什么范例三中的list分配变量只有2个????

哎。。。麻烦各位指导啊。。。谢谢了!!!

[ 本帖最后由 honeyxiaoyi 于 2007-10-5 12:01 编辑 ]

呵呵,你还是没懂我的意思。你是保定人啊,我还以为保定就我一个人学PHP呢。

前两天一直忙着自己的网站,看在老乡的份上给你详细说一下,哈哈。(说笑的,不要介意)

拿你的例子来说不是正好返回4个下标吗。1,value,0,key。

可能你就是被这么多下标误导了,下面我给你整理一个例子,让你看的更明白些!

[php]
<?php
$arr=array("我是第一个值","我是第二个值","我是第三个值");

echo "当我们用0,1为索引时:<br/><br/>";
$a=each($arr);
echo "我在\$arr数组中的位置为:".$a['0'];
echo "<br/>";
echo "  我在\$arr数组中的值为:".$a['1'];
echo "<br/><br/>";
echo "当我们用key,value为索引时:<br/><br/>";
$b=each($arr);
echo "我在\$arr数组中的位置为:".$b['key'];
echo "<br/>";
echo "  我在\$arr数组中的值为:".$b['value'];
?>
[/php]

其实each函数得到这四个下标只是方便我们操作而已,我们可以用0,1作为索引,也可以用key,value作为索引,好好看上面那个例子你就会明白了!!!

[ 本帖最后由 dx_andy 于 2007-10-5 21:17 编辑 ]

谢谢了。。。这次彻彻底底明白了。。。。

我也是河北的,但是秦皇岛的
只有拼搏,努力和进取,自己的未来才会更美好

不错支持一下