_猫科龙 2014-12-12 07:26 采纳率: 100%
浏览 1956
已采纳

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条回答 默认 最新

  • _猫科龙 2014-12-12 07:40
    关注

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

    还是感谢亲的回答!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?

悬赏问题

  • ¥20 关于普洛菲斯触摸屏与AB连接地址问题
  • ¥15 vue但是页面显示的数据为空为什么呀,明明在钩子函数中已经成功赋值(相关搜索:输出数据)
  • ¥15 syri可视化不显示插入缺失
  • ¥30 运行软件卡死查看系统日志分析不出来
  • ¥15 C语言代码改正特征选择算法设计,贝叶斯决策,,设计分类器,远程操作代码修正一下
  • ¥15 String 类valuve指向的问题
  • ¥15 在ros2的iron版本进行编译时遇到如下问题
  • ¥18 vs用setup project打包项目实现安装完立即运行
  • ¥15 孟德尔随机化TwoSampleMR在线提取结局数据,遇到Error in check_reset(override_429)的问题
  • ¥15 ONNX转RKNN遇到问题
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部