2 aver86 aver86 于 2014.12.12 23:26 提问

PHP中使用foreach和while each输出关联数组,只能显示其中一个

<?php
$prices = array( 'Tires'=>100 );

$prices[ 'Oil' ] = 10;

$prices[ 'Spark plugs' ] = 4;

echo $prices['Oil'].'<br />';
foreach ($prices as $key => $value) {
    echo $key.' - '.$value.'<br />';    
}

while($element = each($prices)){
    echo $element[ 'key' ];
    echo ' - ';
    echo $element[ 'value' ];
    echo '<br />';
}

?>

注释掉两种输出方式中的任何一个,另一个都可以正常输出;
但是把它们放在一起后,却只能输出其中一个。
然而, 我把两种输出方式的顺序调转后,发现两个都可以输出。
请问,何解?

2个回答

aver86
aver86   2014.12.12 23:40
已采纳

OK,我想明白了。这和foreach的原理有关。
foreach每执行一次,数组内部的指针后移一步,待输出完毕后,指针已经指向'\0'元素了。
因此随后的while(each)不会输出任何结果,因为它相当于在读取一个空数组。
解决的方法是reset($prices),使数组的指针指向首元素,然后执行第二种输出方法。

还是感谢亲的回答!

qq_23265365
qq_23265365   2014.12.12 23:30

phpforeach

<?php
$prices = array( 'Tires'=>100 );

$prices[ 'Oil' ] = 10;

$prices[ 'Spark plugs' ] = 4;
echo $prices['Oil'].'
';
foreach ($prices as $key => $value) {
echo $key.' - '.$value.'
';

}

aver86
aver86 不好意思啊,不熟悉CSDN的布局,采纳错了!感谢亲的帮忙!
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
PHP:遍历关联数组的方法介绍
目录(?)[-] foreacheachlist each   在PHP中数组分为两类: 数字索引数组和关联数组。其中数字索引数组和C语言中的数组一样,下标是为0,1,2…而关联数组下标可能是任意类型,与其它语言中的hash,map等结构相似。 下面介绍PHP中遍历关联数组的三种方法: foreach [c-sharp] view plaincopypr
php list each 访问数组
while (list ($key, $val) = each ($para)) { if($key == "sign" || $key == "sign_type" || $val == ""){ continue; } else $para_filter[$key] = $para[$key]; print_r($key."->"); } 但是调试发现,list
PHP遍历关联数组的方法介绍
在PHP中数组分为两类: 数字索引数组和关联数组。其中数字索引数组和C语言中的数组一样,下标是为0,1,2…而关联数组下标可能是任意类型,与其它语言中的hash,map等结构相似。下面介绍PHP中遍历关联数组的三种方法:foreach 'good', 'swimming' => 'very well', 'running' => 'not good' ); foreach ($sports as $key => $value) { echo $key.": "
foreach循环实现一行多条数据并设置样式
通常使用foreach之类的循环一行只显示一条数据,有时候为了页面需要,可以在一行显示多条数据,可以在循环中做判断添加html标签,如下代码: 1、样式代码: body,div,p,ul,li,a,span,input,textarea,button,th,td{font-size:12px !important;} .on{background: #ea6100;color
forEach 如何输出序号
转自:http://blog.csdn.net/luotangsha/article/details/6564783 关键在于的varStatus属性,具体代码如下:      序号     姓名     ${ status.index + 1}     ${ student.name} 备注:status.index是从0开始的。
PHP二维关联数组的对某一个值排序
Array (     [0] =&gt; Array         (             [id] =&gt; 169             [parent_id] =&gt; 0             [parent_ids] =&gt;              [level] =&gt; 1             [group_id] =&gt; 10
php foreach输出二维数组
/*  *标题:foreach输出二维数组  *函数:foreach()  *创建时间:2015年5月16日  *注意事项:  */ //输出一维数组 $array1 = array(); $array1[0] = '楚留香'; $array1[1] = '胡铁花'; $array1[2] = '姬冰燕'; //只有va
php数组的遍历讲解 (for foreach list each key )
php数组的遍历讲解 本文主要讲解for,foreach,list,each,key,指针操作相关函数,array_flip ,array_reverse,array_walks等函数的对数组的遍历 1.for循环遍历数组 for循环是几乎所有语言都可以用的一种遍历数组的方式,但是在php语言中for循环不是遍历数组的首选 一下是for循环实现数组遍历的示例代码
foreach遍历数组的两种方法
使用foreach遍历数组时,要知道其中的两种方法,熟练掌握
使用foreach遍历三维数组
由于PHP是弱类型语言,数组相对其它语言较为灵活;PHP的数组不必强制规定其类型和长度,所以语法中专门提供了foreach来遍历数组;