如何仅在循环的第一次迭代中执行特定代码块?

时间:2014-03-18 14:10:52

标签: php

如何在循环的第一次迭代中为only执行特定的代码块?

Schematic image

2 个答案:

答案 0 :(得分:7)

你的意思是问“我如何只为 循环的第一次迭代执行特定的代码块”?使用标准for循环,您只需检查计数器,例如:

for ($i = 0; $i < count($images); i++) {
    if ($i == 0) {
        // do this once
    }
    // do this always
}

使用foreach循环,您可以引入某种标志值,例如:

$i = 0;
foreach ($images as $image) {
    if ($i++ == 0) {
        // do this once
    }
    // do this always
}

或许是一个布尔标志:

$firstIteration = true;
foreach ($images as $image) {
    if ($firstIteration == true) {
        // do this once
        $firstIteration = false;
    }
    // do this always
}

当然,所有这些都引出了为什么这需要在循环中的问题。考虑这样的事情:

// do this once
foreach ($images as $image) {
    // do this always
}

如果它只应在集合中包含元素时执行,则可以轻松检查:

if (count($images) > 1) {
    // do this once
}
foreach ($images as $image) {
    // do this always
}

最终,循环用于调用集合中每个元素的操作。如果要为整个集合调用一次操作,则该操作可能不属于循环。

答案 1 :(得分:2)

你所要求的听起来有点像goto,这通常不是好习惯,也不会真的为你工作。

建议#1

看看你希望每次迭代第一个代码块时你想要执行第二个代码块,你有什么理由不能把第二个代码块放在第一个代码块之内吗?

建议#2

将代码块#2放入函数中并调用函数:

foreach ($images as $image) {
  someFunction();
}

function someFunction() {
  // do something
}
如果需要,

传递someFunction()个变量。如果必须,让它返回一个值并将返回的值分配给循环的变量。