PHP foreach или for loop для этой цели? - PullRequest
0 голосов
/ 05 июня 2011

это действительно глупый вопрос, но я хотел бы знать для условия ниже, какой цикл будет лучше всего использовать? foreach или for loop?

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

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

ИЛИ

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

Ответы [ 4 ]

3 голосов
/ 05 июня 2011

Просто используйте взорваться .

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

Это стандартная функция и, следовательно, вероятно, лучший / наиболее оптимизированный способ сделать это.

Кроме этого, foreach специально для этого случая, поэтому вам не нужно определять переменную для подсчета. Делает его более читабельным.

В конце концов, это не оказывает заметного влияния на производительность, поэтому вы можете использовать все, что захотите. Больше о стиле кодирования и удобочитаемости.

3 голосов
/ 05 июня 2011

В этом случае Foreach более лаконичен.

1 голос
/ 05 июня 2011

Foreach определенно проще.Однако, если вы хотите получить доступ к ключам ваших значений (ваш $i), вы можете сделать это следующим образом:

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

Это также отлично работает с массивами, где ключ не является числовым, напримерассоциативные массивы.

0 голосов
/ 05 июня 2011

Это на самом деле не имеет значения, однако помните, что массивы без указанных ключей будут начинаться с индекса 0 - не 1, как вы предполагали в первом примере.

Использование foreach() может быть прощечитать, однако использование for() позволяет вам легко получить доступ к предыдущим / следующим элементам, если это необходимо, без необходимости смешивать оба варианта (т. е. использовать текущий элемент без индекса, другие элементы с индексом).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...