如何使PHP代码只运行一次

3

可能重复的问题:
如何在PHP中只执行一次代码块?

我的代码基本上检查分配给帖子的当前类别,并根据它检索代码。 如果有多个类别分配给文章,则会呈现两种代码或相同代码两次。
我想知道是否有选项可以使代码仅运行一次。

<?php 
foreach((get_the_category()) as $category){ 
  if($category->cat_ID == '4'){ 
    echo "....TEXT...."; 
  } else { 
    echo "....TEXT2....";
  }
}
?>

谢谢!


4
请在发布问题前使用搜索功能。以下是需要翻译的内容:duplicate, duplicate, duplicate. - eykanal
3
那些重复的答案都无法回答这个问题。 - Phil
@eykanal:这个问题和那些所谓的重复问题之间唯一的相似之处就是标题。 - ADW
也许先运行foreach,将结果保存在变量中以防它在变量中出现两次,然后显示变量。无论是两次还是一次,只显示一次,当然在foreach之后。 - devasia2112
@ADW - 你是对的,我的错。就在几天前,确实有一个与此完全相同的问题,它让我有些激动,但一次快速搜索显示了其他的“重复”,但这些不是我想到的那个。 - eykanal
4个回答

5
$first = true;    
foreach((get_the_category()) as $category) { 
        if($category->cat_ID == '4') { 
           echo "....TEXT....";
           $first = false;
        } else { 
           echo "....TEXT2....";}
           $first = false;
        }

        if(!$first) break;
    }

这段代码会不必要地执行多次,因此会消耗更多的资源... - Goran
好的,我明白你的意思了,让我想一个更好的解决方案。 - Phil
1
不需要,只需看看我的答案 ;) - Goran
哈哈,只是出于好奇,现在怎么样了? - Phil
如果语句和$first变量都是不必要的... - Goran

2
尝试这个:
<?php 
foreach((get_the_category()) as $category){ 
  if($category->cat_ID == '4'){ 
    echo "....TEXT...."; 
  } else { 
    echo "....TEXT2....";
  }
  break;
}

?>

break语句用于无论条件如何都可以跳出循环。请参考此文进行查看。


这样做不行,因为即使类别不是4,它也会跳出:D - Phil
不会,因为循环只会执行一次... - Goran
终于我明白了break!谢谢!:D - Syed Priom
非常欢迎您的光临:) - Goran

1
在循环内部添加一个变量,用于标记代码已运行。然后在运行之前检查该变量:
<?php 
   if($first_run) {
      foreach((get_the_category()) as $category){ 
         if($category->cat_ID == '4'){ 
               echo "....TEXT...."; 
         } 
         else { 
               echo "....TEXT2....";
         }
        }
      $first_run = TRUE;
      }
        ?>

只有在从函数调用代码或在同一脚本中多次包含它时,这才起作用。如果您希望它每个会话仅运行一次(跨多个页面),则应该使用 SESSION 变量。


0

补充我的上面的评论。

<?php 
      foreach((get_the_category()) as $category){ 
         if($category->cat_ID == '4'){ 
               $varCateg = "....TEXT...."; 
         } 
         else { 
               $varCateg = "....TEXT...."; 
         }
        }

// diplay varCateg here
echo $varCateg; 

?>

这样做不会重复显示类别。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接