2017-06-27 75 views
2

这是我的foreach代码如何限制foreach循环

foreach ($response3["keywords"] as $genreObject) { 
      $keywords_name = $genreObject["name"]; 
      $stmt->execute(); 
     } 

什么更好的办法来限制循环,不这样?

if ($i++ == 10) break; 
+1

怎么样的新数组array_slice($阵列,0,10); – JYoThI

回答

6

您可以限制实际阵列的循环迭代:

<?php 
foreach (array_slice($response3["keywords"], 0, 10) as $genreObject) { 
    $keywords_name = $genreObject["name"]; 
    $stmt->execute(); 
} 

或者,如果阵列是直数字索引之一,你可以使用一个for环哪个更高效:

<?php 
for ($i=0; $i<=10; $i++) { 
    $keywords_name = $response3["keywords"][$i]["name"]; 
    $stmt->execute(); 
} 
+0

哦,第一种方法比break语句更好吗? –

+3

@JohnDoo在编程中谈论“好”或“坏”是一个值得怀疑的事情。这个判断完全取决于你所应用的标准......其中最重要的一个方面就是可读性,因为这是代码重用和维护的原因。 – arkascha

1

就我个人而言,当代码的文档写得很好时,我发现丢失的可读性不成问题。你可以做到这一点。

<?php 
    $i=0; 
    while($i<10 && $keyword = $response3["keywords"][$i++];) { 
     $keywords_name = $keyword["name"]; 
     $stmt->execute(); 
    } 

它看起来并不整齐的array_slice()瓦特/ foreach循环,但这样会导致正在进行这其实并不重要,除非它是一个特别长且重的脚本

+0

必须是'while($ i <10 && ..)',尽管同样的错误在这个问题中。我假设你想要10而不是11,因为10是一个整数。 – Adder

+0

谢谢,我修好了 –