这真是一个愚蠢的问题,但我想知道以下条件哪个循环最好用? 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 .= ' ( ? , ?) , ';
}
答案 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()
可以让您轻松访问上一个/后面的元素,而不必混合两种风格(即使用当前元素而不使用索引,其他带索引的元素。)