试试这个~
<?php
$arr=array('username'=>'John');while (list($key, $val) = each($fruit)) {
    echo "$key => $val\n";
}
?>

解决方案 »

  1.   

    啊 错了<?php
    $arr=array('username'=> 'John');while   (list($key,   $val)   =   each($arr))   {
            echo   "$key   =>   $val\n";
    }
    ?>
      

  2.   

    你这句代码只是像数据变量中添加了一个元素,可以用0索引,用1索引肯定会出错的呀,因为上界溢出。
    $key = echo ($arr)[0];
    $value = echo $arr[$key];
    echo "$key = $value";
      

  3.   

    <?php
    $arr=array('username'=>'John');$value=each($arr);
    //$key=each($arr);echo $value[0];
    echo $value[1];
    ?>
      

  4.   

    老大,PHP毕竟不是你研发的,它虽然灵活,但是还没有灵活到你写的那个程序。
      

  5.   

    老大,PHP毕竟不是你研发的,它虽然灵活,但是还没有灵活到你写的那个程序。
    -----------------------------------------------------------------------------
    //这种写法难道很奇怪?我接触的其它语言都支持这种写法,(C\VB\JS\C#), 注意each($arr)返回的是一个数组,里面有两个元素,既然它是数组,后面用[]来取元素理论上不是很正常么?
    我觉得php奇怪,也不光是数组,还有如 foo=>bar() 如果bar()返回的是一个对象,那么它应该有自己的方法,比如fun()吧,但好像用foo=>bar()=>fun()这样的写法也不行,而这在其它语言里也是完全可行的。感谢各位的回复,boywind,list()应该好用。 chris_mao,您好像看错了each与echo;my_web 您写的这个就是我说的用了中间变量,我要讨论的就是能不能不用。
      

  6.   

    php不是别的语言,每种语言都有自己的规则,不要指望所有的语言都兼容一个模式,Ok ?
      

  7.   

    关于这种用法我以前也有过倾向,
    自己写的一个函数返回一个数组。我就用$var = functionname()[0];这种写法,结果发现不可以这样写。
      

  8.   

    支持7楼的说法
    请楼主看看手册,看each返回的是什么?
    好象不是数组,只是数组的一条记录指针
    如果$a不是数组,$a[0],$a[1],这样能表示吗?
      

  9.   

    Each:
    Returns the current key and value pair from the array array and advances the array cursor. 楼主没好好看手册
      

  10.   

    你第一次用each已经移动了指针
    等你第二次用,指针到底了,再移就出错了。
    <?php
    $foo = array("bob", "fred", "jussi", "jouni", "egon", "marliese");
    $bar = each($foo);
    print_r($bar);
    ?>$bar now contains the following key/value pairs: 
    Array
    (
       [1] => bob
       [value] => bob
       [0] => 0
       [key] => 0
    )
      

  11.   

    因为每次调用都移动指针,所以应该先赋一个临时变量过去,再用楼主的办法调用。这和以前的文件记录读取函数是一样的,跟php的脚本特性没任何一点的联系啊。
      

  12.   

    谢谢各位的回复,受教了。不过楼上好像有几位都在讨论这个数组或者是each的问题,其实我真正想讨论的并不是运行时错误,而是语法上的错误。就像ShadowSniper 说的 $var   =   functionname()[0]; 这种写法也不可以。只所以有这样的问题,是因为前几天试着反编了一个zend加密过的php文件,看到里面有个函数,就有这样的代码each($cursor)[0],但报了语法错误。我想Zend Guard在加密php的时候,应该做了优化,也许这是优化过的脚本反编后的结果。所以很想知道有没有变通的做法,能实现这种写法。
    好了,不钻牛角了,既然这种写法php不支持,那还是老老实实用变量罢。