php 两层foreach循环如何给里层循环变量设置初始值=0

myronup 2014-07-09 10:49:44
<?php foreach($questions as $k=>$question): ?>
<?php foreach($answers as $i=>$answer): ?>
<?php endforeach; ?>
<?php endforeach; ?>


如何在里层循环完之后 第二次里层循环时让$i的值从0开始,而不是接着上次循环的值继续
...全文
369 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2014-07-10
  • 打赏
  • 举报
回复
#3 代码 第8行改为 <?php $i=0; foreach($answers as $answer): ?> 第14行改为 <?php $i++; endif ;?> 内层每次都要遍历 $answers 数组,而只取少量数据 有点得不偿失,建议调整一下数据组织方式(参考#4) 当然也可以在主循环开始前先对 $answers 做聚类处理
傲雪星枫 2014-07-09
  • 打赏
  • 举报
回复
引用 2 楼 myronup 的回复:
[quote=引用 1 楼 jordan102 的回复:] 不明白你的意思,举例说明。或者说明一下你想怎样输出。
需求是这样的 一个问题下面好几个选项 问题跟选项是一对多的关系 我写了两个foreach循环 数据能读出来, 比如 问题1 下面选项是 1.选项a 2.选项b 问题2 下面选项是1.选项c 2.选项d 这里选项的题号 我想用$i来做,但是两个foreach之后 问题2的选项的题号是从3开始的[/quote]

<?php
echo '<meta http-equiv="content-type" content="text/html;charset=utf-8">';

$questions = array(
    '问题1',
    '问题2',
    '问题3'
);

$answers = array(
    array('选项a','选项b'),
    array('选项c','选项d'),
    array('选项e','选项f')
);

foreach($questions as $k=>$question){
    echo 'Q'.($k+1).'<br>';
    foreach($answers[$k] as $i=>$answer){
        echo 'option'.($i+1).' '.$answer.'<br>';
    }
    echo '<br>';
}
?>
Q1 option1 选项a option2 选项b Q2 option1 选项c option2 选项d Q3 option1 选项e option2 选项f
myronup 2014-07-09
  • 打赏
  • 举报
回复

<?php foreach($questions as $k=>$question): ?>
	        		<dl>
		            	<dt class="knowledge_problem"><i><?php echo $k+1 ;?>.</i><span><?php echo $question['a']['question']; ?></span></dt>
		                <dd>
		            	<input type="hidden" id="<?php echo 'num'.($k+1) ;?>" name="<?php echo 'num'.($k+1) ;?>" value="<?php echo $question['a']['ID']; ?>"/>
		                	<div class="answer clearfix">
		                    	<ul>
			                    	<?php foreach($answers as $i=>$answer): ?>
			                     		<?php if($question['a']['ID'] == $answer['b']['idw_questions']): ?>
				                        	<li class="<?php echo 'num0'.($i+1) ?>">
				                            	<input type="radio" name="<?php echo $k+1 ?>" id="<?php echo $answers[$i]['b']['ID']; ?>"  value="<?php echo $answers[$i]['b']['ID']; ?>">
				                				<label for="<?php echo $answer['b']['ID']; ?>"><?php echo $answer['b']['answer']; ?></label>
				                            </li>
										<?php endif ;?>
			                        <?php endforeach; ?>
		                        </ul>
		                    </div>
		                </dd>
	        	    </dl>
				<?php endforeach; ?>
myronup 2014-07-09
  • 打赏
  • 举报
回复
引用 1 楼 jordan102 的回复:
不明白你的意思,举例说明。或者说明一下你想怎样输出。
需求是这样的 一个问题下面好几个选项 问题跟选项是一对多的关系 我写了两个foreach循环 数据能读出来, 比如 问题1 下面选项是 1.选项a 2.选项b 问题2 下面选项是1.选项c 2.选项d 这里选项的题号 我想用$i来做,但是两个foreach之后 问题2的选项的题号是从3开始的
一起混吧 2014-07-09
  • 打赏
  • 举报
回复
不明白你的意思,举例说明。或者说明一下你想怎样输出。

4,250

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧