<?php 
  $prices['ss'] = 12; 
  $prices['sz'] = 14; 
  $prices['cz'] = 18;   //采用foreach输出数组 
  foreach($prices as $name=>$value) 
    echo "$name=>$value<br/>"; 
  
  //采用each()输出数组 
  while($element = each($prices)) 
    echo "$element[key]=>$element[value]<br/>"; 
?> 
以上代码是同时使用了两种数组输出方式,各自单独输出都是可以的,调换两种方式的顺序也是可以正常输出的,但是如上代码顺序,第一种能输出,第二种不能输出。 
还有一个小问题,如果把最后的输出语句中的key和value加上单引号,就会报语法错误,如:echo "$element['key']=>$element['value']<br/>"; 
这两个小问题各是什么原因呢?先谢谢了 

解决方案 »

  1.   


    <?php  
      $prices['ss'] = 12;  
      $prices['sz'] = 14;  
      $prices['cz'] = 18;    //采用foreach输出数组  
      foreach($prices as $name=>$value)  
      echo "$name=>$value<br/>";  
       
      //采用each()输出数组  
      //while($element = each($prices))  
      //echo "$element[key]=>$element[value]<br/>"; 
      reset($prices);
      while (list($key, $val) = each($prices))
      {
      echo "$key => $val<br />";
      }
    ?>  
    each() 经常和 list() 结合使用来遍历数组。  之前要reset一下  因为前面把指针移动了 
      

  2.   

      //采用each()输出数组 
      while(list($key, $val) = each($prices)) 
      {
       echo "$key => $val\n";
      } 第二个问题
    用转义符\' 就可以了。
      

  3.   

    对了,别忘记reset重置数组。否则each下标将从最后一个开始,那么你什么也输出不了。
      

  4.   

    1. 应该是没有指针没有复位导致的,两个循环之间加一个reset($prices)就知道了
    2. 语法约束
    以上细则请参阅PHP手册
      

  5.   

    以下程序供参考:$prices['ss'] = 12;
    $prices['sz'] = 14;
    $prices['cz'] = 18;// 采用foreach输出数组
    foreach($prices as $name=>$value)
        echo "$name=>$value<br/>";reset($prices); // each() 输出的是“当前元素”,而 $prices 的“当前元素”已经被 foreach 推到末尾了,reset 一下就可以了// 采用each()输出数组
    while($element = each($prices))
        echo "{$element['key']}=>{$element['value']}<br/>"; // 如果要使用单引号('),就要同时使用花括号({ })
    ■□■□■□■□■□■□■□■
    □             □
    ■  忍以明志 勤以致远  ■
    □             □
    ■□■□■□■□■□■□■□■
    基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)