【问题标题】:How to tell a foreach loop only to go through the loop for x times?如何告诉 foreach 循环只通过循环 x 次?
【发布时间】:2011-07-04 22:00:46
【问题描述】:

我怎样才能正确地做到这一点:

$array[]['title'] = $secondarray["title"];
$array[]['content'] = $secondarray["content"];

foreach($array as $arr) {
$output.="<div>".$arr['title']."</div><br/>";
}
unset($arr);

例如,现在$array[]['title'] 包含 10 个条目,$array[]['content'] 也包含 10 个。 但是 foreach 循环将给出 20 div 作为结果,因为 $array 包含 10+10 个元素。如何告诉 foreach 只采用 $array[]['title'] 中的元素数量(因为 $array[]['content'] 是属于每个标题的内容)?所以这意味着只通过循环 10 次。

PS:请不要回答我应该使用“for”。

感谢您的帮助, phpheini

【问题讨论】:

  • 您的假设不正确:»$array[]['title'] 包含 10 个条目,$array[]['content'] 也包含 10 个« -> $array 看起来像:@ 987654328@ - 我怀疑这就是你想要实现的目标

标签: php arrays foreach


【解决方案1】:

另一种方法是只给它一个部分数组:

foreach (array_slice($array, 0, 10) as $row)
{
    ...

【讨论】:

  • 这是最干净的方式。还要记住array_slice 默认情况下会重置键,所以在键很重要的情况下,我们需要做foreach (array_slice($array, 0, 10, true) as $key=&gt;$row)
【解决方案2】:

我建议将标题和内容放在一个数组中,然后您可以使用 foreach 而不计数,并且标题及其内容是“分组”的:

$array[] = array ( 'title' => $secondarray['title'], 'content' => $secondarray['content'] );

foreach($array as $arr) {
  echo '<h1>',htmlspecialchars($arr['title']),'</h1>';
  echo '<p>',htmlspecialchars($arr['content']),'</p>';
}

【讨论】:

  • 我看不出投反对票的原因。介意解释一下吗?当然,第一行不可能完全正确,因为创建具有单个元素的数组是没有意义的,但是该代码取自 OPs 问题,仅稍作改动以反映其背后的想法
  • 我不明白他为什么不投票给你,因为这是一个非常好的答案。非常感谢!
【解决方案3】:

使用类似的东西,但如果数据来自数据库,你真的应该使用 LIMIT。

$i = 0;
foreach($array as $arr) {
     $i++;
     $output.="<div>".$arr['title']."</div><br/>";
     if ($i == 10) break;
}

【讨论】:

  • 嗯,但 10 只是一个例子,它总是不同的。
【解决方案4】:

也许

$array[] = array(
  'title' => $secondarray["title"],
  'content' => $secondarray["content"],
);

之后就不需要限制循环次数了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 2013-11-28
    • 2013-08-19
    • 1970-01-01
    • 2017-01-27
    相关资源
    最近更新 更多