Как выполнить дополнительное действие только на первой итерации цикла? - PullRequest
1 голос
/ 30 августа 2009

Я знаю, как это сделать ... Я приведу пример кода ниже. Но я не могу избавиться от ощущения, что есть умный способ выполнить то, что я хочу сделать, без использования такой переменной, как $isfirstloop.

$isfirstloop = true;
foreach($arrayname as $value) {
 if ($isfirstloop) {
  dosomethingspecial();
  $isfirstloop = false;
 }
 dosomething();
}

Есть ли способ выполнить dosomethingspecial() только в первом цикле, одновременно выполняя dosomething() в каждом цикле, без введения такой переменной, как $isfirstloop?

Спасибо!

Ответы [ 6 ]

7 голосов
/ 30 августа 2009

Простите, если я что-то упустил, но почему бы просто не сделать то, что вы хотите до цикла?

dosomethingspecial();
foreach($arrayname as $value) {
 dosomething();
}
4 голосов
/ 30 августа 2009
foreach ($arr as $i => $val)
{
  if ($i == 0) { doSomethingSpecial(); } // Only happens once.
  doSomething(); // Happens every time.
}
1 голос
/ 30 августа 2009

Хмм ... Вы можете reset массив и посмотреть, если вы на первом ключе:

reset($a); foreach($a as $k => $v) {
    if(key($a)==$k) doIt();
}
0 голосов
/ 30 августа 2009

Вы не получаете никакой производительности от альтернативных методов. Ваш метод просто отлично.

0 голосов
/ 30 августа 2009
$elem = reset($arrayname);
dosomethingspecial();
while( ($elem = next($arrayname)) !== FALSE ) {
  dosomething();
}
0 голосов
/ 30 августа 2009
$count = count( $arr );

for ( $i = 0; $i < $count; $i++ ) {
    if ( $i == 0 ) { dosomethingspecial(); }
    doSomething();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...