代码循环一个数组并显示用户的所有视图。现在事情发生了变化,我只需要显示foreach循环中的一个结果。我该怎么做?
<table class="report_edits_table">
<thead>
<tr class="dates_row">
<?php foreach($report['edits'] as $report_edit) : ?>
<td colspan="2" report_edit_id="<?php echo $report_edit['id'] ?>"><div class="date_container">
<?php if($sf_user->hasCredential(Attribute::COACHING_EDIT_ACCESS)) : ?>
<span class="ui-icon ui-icon-trash">Remove</span>
<?php endif?>
<?php echo "View " . link_to($report_edit['created'], sprintf('coaching/viewReportEdit?reportedit=%s', $report_edit['id']), array('title' => 'View This Contact')) ?> </div></td>
<?php endforeach ?>
</tr>
</thead>
<tbody>
<?php foreach($report['edits_titles'] as $index => $title) : ?>
<tr class="coach_row">
<?php for ($i=max(0, count($report['edits'])-2); $i<count($report['edits']); $i++) : $report_edit = $report['edits'][$i] ?>
<td class="name_column"><?php echo $title ?></td>
<td class="value_column"><?php echo $report_edit[$index] ?></td>
<?php endfor ?>
</tr>
<?php endforeach ?>
</tbody>
答案 0 :(得分:5)
使用break
命令进行简单转换:
<?php for ... ?>
... stuff here ...
<?php break; ?>
<?php endfor ... ?>
更好的解决方案是完全删除foreach
。
答案 1 :(得分:4)
听起来你想要从数组中获取第一个元素而不必遍历其余元素。
PHP为这种情况提供了一组函数。
要获取数组中的第一个元素,请先使用reset()
函数将数组指针定位到数组的开头,然后使用current()
函数读取指针的元素正在看。
所以你的代码看起来像这样:
<?php
reset($report['edits']);
$report_edit = current($report['edits']);
?>
现在,您可以使用$report_edits
,而无需使用foreach()
循环。
(请注意,数组指针实际上默认在第一条记录处启动,因此可以跳过reset()
调用,但最好不要这样做,因为它可能有在您没有意识到的情况下,您的代码中的其他地方已被更改)
如果您想在此之后转到下一条记录,则可以使用next()
功能。如您所见,如果您愿意,理论上可以使用这些函数来编写替代类型的foreach()
循环。以这种方式使用它们没有任何意义,但这是可能的。但它们确实允许对阵列进行更精细的控制,这对于像你这样的情况很方便。
希望有所帮助。
答案 2 :(得分:3)
有很多方法
我建议只获取感兴趣的数组元素(列表中的数字2),因为它意味着更少的数据在您的代码周围弹跳(如果您从SQL填充数组,可能在您的PHP框和数据库之间)服务器)
答案 3 :(得分:1)
最简单的方法?
将break
作为foreach的最后一行。它会执行一次,然后退出。 (只要你停下来的 元素并不重要)。
辅助方法:在$report['edits']
或$report['edits_titles']
上使用array_pop
或array_shift
来获取元素,丢失for循环,并引用刚刚检索到的元素。< / p>
例如:
//
// current
//
foreach ($report['edits'] as $report_edit) :
/* markup */
endforeach;
//
// modified version
//
$report_edit = array_shift($report['edits']);
/* markup */
答案 4 :(得分:1)
在<?php break ?>
<?php endforeach ?>
答案 5 :(得分:1)
example ::
<?php
foreach ($this->oFuelData AS $aFuelData ) {
echo $aFuelData['vehicle'];
break;
}
?>
答案 6 :(得分:0)
您也可以将其用作参考
foreach($array as $element) {
if ($element === reset($array))
echo $element;
if ($element === end($array))
echo $element;
}