如何仅在循环的第一次迭代中执行其他操作?

时间:2009-08-29 20:03:57

标签: php loops

我知道如何做到这一点......我将在下面给出示例代码。但我不能动摇这种感觉,即如果不使用像$isfirstloop这样的变量,有一种聪明的方法可以完成我想做的事。

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

有没有办法只在第一个循环上执行dosomethingspecial(),而在每个循环上执行dosomething(),而不引入像$isfirstloop这样的变量?

谢谢!

6 个答案:

答案 0 :(得分:7)

原谅我,如果我错过了什么,但为什么不在循环之前做你想做的事情呢?

dosomethingspecial();
foreach($arrayname as $value) {
 dosomething();
}

答案 1 :(得分:4)

foreach ($arr as $i => $val)
{
  if ($i == 0) { doSomethingSpecial(); } // Only happens once.
  doSomething(); // Happens every time.
}

答案 2 :(得分:1)

嗯......你可以reset数组然后看看你是否在第一把钥匙上:

reset($a); foreach($a as $k => $v) {
    if(key($a)==$k) doIt();
}

答案 3 :(得分:0)

$count = count( $arr );

for ( $i = 0; $i < $count; $i++ ) {
    if ( $i == 0 ) { dosomethingspecial(); }
    doSomething();
}

答案 4 :(得分:0)

$elem = reset($arrayname);
dosomethingspecial();
while( ($elem = next($arrayname)) !== FALSE ) {
  dosomething();
}

答案 5 :(得分:0)

您没有从替代方法中获得任何表现。你的方法很好。