【问题标题】:PHP foreach array get first 9 results then second 9PHP foreach 数组得到前 9 个结果,然后是第二个 9
【发布时间】:2011-10-05 09:10:38
【问题描述】:

使用 PHP foreach 如何在一个 foreach 中仅获得前 9 个结果,而在另一个中仅获得第二个 9。

有点像

foreach {$shops[1 - 9] as $shop) {

 foreach {$shops[10 - 18] as
 $shop) {

有什么想法吗?

太棒了

【问题讨论】:

  • array_slice 是你想要的。
  • @Robin Knight 几分钟前你问了一个类似的问题,你可以稍微努力一下
  • php.net/manual/en/function.array-slice.php你可以获得更多选择
  • 不确定你是否需要这个,但你也应该知道,最好用 LIMIT 和 OFFSET 限制你的查询结果

标签: php arrays foreach


【解决方案1】:

使用array_slice():

foreach(array_slice($shops,0,9) as $shop){
   // etc.
}

foreach(array_slice($shops,9,9) as $shop){
   // etc.
}

【讨论】:

  • 附带问题:如何对长度未知的数组执行此操作? 1、25、122,而不仅仅是 18?
  • 您可以轻松检查 count() 以获取数组的大小。但是,如果您尝试将其分成大小相等的块并且以 chunksize 为模!= 0,您将必须有逻辑来处理最后一个大小不同的块。但是,所写的 array_slice 调用中的任何内容都不会中断。在我上面的示例中,每个块最多返回 9 个项目。
【解决方案2】:

改用for 循环?

for (int $i = 0; $i < 9; $i++)
{
    $shop = $shops[$i];
}

然后你可以用$i = 10..19 做另一个。如果您必须使用foreach,那么您可以增加一个计数器和break;,或者按照其他人的建议使用array_slice

【讨论】:

  • 如果与数组中的值无关,这可能会起作用
【解决方案3】:

怎么样

foreach (array_slice($shops, 0, 9) as $shop) {
  ...
}

foreach (array_slice($shops, 9, 9) as $shop) {
  ...
}

??

【讨论】:

    【解决方案4】:
    foreach (array_chunk($shops, 9) as $section) {
        // Do some logic on each section
        foreach ($section as $shop) {
            // Do some logic on each shop
        }
    }
    

    【讨论】:

    • 这个答案比其他答案复杂得多。
    【解决方案5】:

    使用array_slice 你可以将你的数组分成两个然后你可以这样做

    $my_array = array('1','2',...,'18');
    
    $first_array = array_slice($my_array,0,9);
    $second_array = array_slice($my_array,9,18);
    

    【讨论】:

      【解决方案6】:

      改用for 循环。

      for ($i = 0; $i < 9; $i++)
      {
          $shop = $shops[$i];
      }
      
      for ($i = 9; $i < 18; $i++)
      {
          $shop = $shops[$i];
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-06-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-09
        • 2013-05-13
        • 1970-01-01
        • 2017-01-01
        • 1970-01-01
        相关资源
        最近更新 更多