首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从foreach(PHP)中只得到一个结果

如何从foreach(PHP)中只得到一个结果
EN

Stack Overflow用户
提问于 2011-10-07 23:45:16
回答 7查看 13.4K关注 0票数 4

该代码循环一个数组,并为用户显示所有视图。现在情况发生了变化,我只需要显示foreach循环的一个结果。我该怎么做?

代码语言:javascript
复制
<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>

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-10-07 23:47:58

使用break命令进行简单转换:

代码语言:javascript
复制
<?php for ... ?>
    ... stuff here ...
    <?php break; ?>
<?php endfor ... ?>

更好的解决方案是完全删除foreach

票数 5
EN

Stack Overflow用户

发布于 2011-10-07 23:55:58

听起来您想要从数组中抓取第一个元素,而不必遍历其他元素。

PHP为这种情况提供了一组函数。

要获取数组中的第一个元素,首先使用reset()函数将数组指针定位到数组的开头,然后使用current()函数读取指针正在查看的元素。

因此,您的代码将如下所示:

代码语言:javascript
复制
<?php
reset($report['edits']);
$report_edit = current($report['edits']);
?>

现在,您可以使用$report_edits,而不必使用foreach()循环。

(请注意,默认情况下,数组指针实际上从第一个记录开始,因此您可以跳过reset()调用,但最佳实践是不要这样做,因为它可能在您未意识到的情况下在代码中的其他地方被更改了)

如果您想转到下一条记录,可以使用next()函数。正如您所看到的,如果您愿意,理论上可以使用这些函数编写另一种类型的foreach()循环。以这种方式使用它们没有任何意义,但这是可能的。但它们确实允许对数组进行更细粒度的控制,这对于您这样的情况很方便。

希望这能有所帮助。

票数 4
EN

Stack Overflow用户

发布于 2011-10-07 23:47:49

有很多方法

无论逻辑提取/生成的是什么,都要访问相关数组元素的索引,以便只返回感兴趣的元素。使用在单个loop

  • array_filter之后终止的

循环来获取感兴趣的元素,并在foreach循环结束时中断

  • ,这样它就会在第一个loop

  • array_filter循环结束时终止检查foreach循环中的索引,并且只有在索引与感兴趣的元素匹配时才输出标记

<

  • >G215>

我建议只获取感兴趣的数组元素(列表中的第2个),因为这意味着在代码中跳跃的数据更少(如果是从SQL服务器填充数组,则可能在PHP机器和数据库之间)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7689626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档