如何在循环的第一次迭代中为only
执行特定的代码块?
答案 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()
个变量。如果必须,让它返回一个值并将返回的值分配给循环的变量。