![](/img/trans.png)
[英]Using PHP conditional statements to switch HTML content on different pages
[英]Conditional switch statements in PHP
我非常習慣 vb.net 的Select Case
語法,它本質上是一個 switch 語句,您可以在其中執行Case Is > 5
之類的操作,如果匹配,它將執行該 case。
由於我不知道 PHP 中的實際名稱,我該如何做我將稱之為“條件切換語句”的事情?
或者,什么是管理它的快速方法?
switch($test)
{
case < 0.1:
// do stuff
break;
}
這就是我目前嘗試過的。
我認為你正在尋找這樣的東西(這不完全是你想要的,或者至少我理解的是你的需要)。
switch (true)
查找評估為真值的情況,並在第一次中斷之前執行其中的代碼; 它遇到。
<?php
switch (true) {
case ($totaltime <= 1):
echo "That was fast!";
break;
case ($totaltime <= 5):
echo "Not fast!";
break;
case ($totaltime <= 10):
echo "That's slooooow";
break;
}
?>
PHP 支持switch 語句。 那是你想要的嗎?
我試圖將其添加為 BoltCock 答案的評論,但 SO 告訴我他的答案已被鎖定,因此我將其作為一個單獨的(並且基本上是多余的)答案:
BoltCock 的“switch(true)”答案很像下面的例子,雖然邏輯上等價於 if + else if + else 可以說更漂亮,因為條件表達式是垂直對齊的,並且是 PHP 中的標准/接受的做法。
但是 if + else if + else 語法本質上是跨腳本語言通用的,因此任何人都可以立即閱讀(和維護),這也讓我點頭。
您可以在 PHP 8.0+ 中使用match statements完成此操作。
如果您的 switch 語句中只有一個表達式,則它等效於以下 match 語句。 請注意,與 switch 語句不同,我們可以選擇返回一個變量(在此代碼中,我將結果存儲在$result
)。
$test = 0.05;
$result = match (true) {
$test < 0.1 => "I'm less than 0.1",
$test < 0.01 => "I'm less than 0.01",
default => "default",
};
var_dump($result);
Match 只允許您在右側有一個表達式( =>
之后的所有內容)。 與多行情況下的 switch 語句等效的是使用單獨的函數。
function tinyCase(){}
function veryTinyCase(){}
function defaultCase(){}
$test = 0.01;
match (true) {
$test < 0.1 => tinyCase(),
$test < 0.1 => veryTinyCase(),
default => defaultCase(),
};
作為參考,如果您只想檢查相等性,您可以執行以下操作:
$result = match ($test) { // This example shows doing something other than match(true)
0.1 => "I'm equal to 0.1",
0.01 => "I'm equal to 0.01",
default => "default",
};
Match 語句確實與您需要注意的 switch 語句有一些主要區別:
===
而不是松散的==
。break
,也不必擔心會遇到下一個案例。帶條件的 Switch 語句
switch(true)
{
case ($car == "Audi" || $car == "Mercedes"):
echo "German cars are amazing";
break;
case ($car == "Jaguar"):
echo "Jaguar is the best";
break;
default:
echo "$car is Ok";
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.