PHP foreach或for循环用于此目的?

时间:2011-06-05 09:28:52

标签: php for-loop foreach

这真是一个愚蠢的问题,但我想知道以下条件哪个循环最好用? foreach还是for循环?

$ids = array(1,2,3,4,5);
$query = 'INSERT INTO blah(id) VALUES ';

for($i=1; $i<=count($ids); $i++) {
    $query .= ' ( ? , ?) , ';
}

OR

foreach($ids as $id) {
    $query .= ' ( ? , ?) , ';
}

4 个答案:

答案 0 :(得分:3)

在这种情况下,Foreach更简洁。

答案 1 :(得分:3)

只需使用implode

$ids = array(1,2,3,4,5);
$query = 'INSERT INTO blah(id) VALUES (';
$query .= implode(', ', $ids);
$query .= ');';

这是一个标准功能,因此可能是最好/最优化的方法。

除此之外,foreach专门针对这种情况,因此您无需为计数目的定义变量。使其更具可读性。

最后,它对性能没有明显的影响,因此您可以随意使用任何您想要的。它更多的是编码风格和可读性。

答案 2 :(得分:1)

Foreach肯定更容易。但是,如果您想访问值的键($i),可以这样做:

foreach($ids as $i => $id) {
    ....
}

对于键不是数字的数组,这也很有用,例如:关联数组。

答案 3 :(得分:0)

这并不重要,但请记住,没有指定键的数组将从索引0开始 - 而不是像你在第一个例子中所假设的那样1

使用foreach()可以更容易阅读,但是使用for()可以让您轻松访问上一个/后面的元素,而不必混合两种风格(即使用当前元素而不使用索引,其他带索引的元素。)