PHP Conference Japan 2024

if

(PHP 4, PHP 5, PHP 7, PHP 8)

if 結構是許多語言最重要的功能之一,PHP 亦然。它允許程式碼片段的條件式執行。PHP 的 if 結構與 C 語言的類似。

if (expr)
  statement

表達式章節所述,表達式會被評估為其布林值。如果 表達式 的評估結果為 true,PHP 將會執行 陳述式;如果評估結果為 false,則會忽略它。更多關於哪些值會評估為 false 的資訊,可以在「轉換為布林值」章節中找到。

如果 $a 大於 $b,以下範例將會顯示 a 大於 b

<?php
if ($a > $b)
echo
"a is bigger than b";
?>

通常您會希望根據條件執行多個敘述。當然,不需要用 `if` 子句包覆每個敘述。您可以將多個敘述組成一個敘述群組。例如,如果變數 $a 大於變數 $b,這段程式碼會顯示 a is bigger than b,然後將 $a 的值賦予 $b

<?php
if ($a > $b) {
echo
"a is bigger than b";
$b = $a;
}
?>

`if` 敘述可以無限巢狀於其他 `if` 敘述中,這為您提供了程式各個部分條件式執行的完全彈性。

新增註記

使用者貢獻的註記 5 則註記

robk
11 年前
使用 PHP if else 執行條件式 HTML / JavaScript / CSS / 其他語言程式碼的簡單方法

<?php if (condition): ?>

條件為真時執行的 HTML 程式碼

<?php else: ?>

條件為假時執行的 HTML 程式碼

<?php endif ?>
georgy dot moshkin at techsponsor dot io
4 個月前
&& 運算子的從左到右求值有一個有用的特性:在遇到第一個「false」運算元後,求值就會停止。

此特性可用於建立以下結構

不會對 $someVar==123 進行求值,因此不會出現「未定義的變數 $someVar」等警告
<?php
// $someVar=123; - 註釋行
if ((!empty($someVar))&&($someVar==123))
{
echo
$someVar;
}
?>

不會呼叫函式 someFunc($someVar)
<?php
// $someVar=123; - 註釋行
if ((!empty($someVar))&&(someFunc($someVar)))
{
echo
$someVar;
}
?>

這會產生「警告:未定義的變數 $someVar」錯誤。順序很重要
<?php
// $someVar=123;
if ((someFunc($someVar))&&(!empty($someVar)))
{
echo
$someVar;
}
?>
techguy14 at gmail dot com
13 年前
您可以在單個 if 陳述式中使用額外的括號來建立「巢狀」if 陳述式。
例如,不要這樣寫

<?php
if( $a == 1 || $a == 2 ) {
if(
$b == 3 || $b == 4 ) {
if(
$c == 5 || $ d == 6 ) {
//在這裡執行某些操作。
}
}
}
?>

您可以簡單地這樣做

<?php
if( ($a==1 || $a==2) && ($b==3 || $b==4) && ($c==5 || $c==6) ) {
//在這裡執行該操作。
}
?>

希望這個有幫助!
grawity at gmail dot com
16 年前
回覆:#80305

再次對新手很有用

如果您需要將變數與值進行比較,而不是這樣做

<?php
if ($foo == 3) bar();
?>

請這樣做

<?php
if (3 == $foo) bar();
?>

這樣,如果您忘記一個 =,它會變成

<?php
if (3 = $foo) bar();
?>

然後 PHP 會回報錯誤。
Christian L.
13 年前
另一種控制方法是三元運算子(請參閱比較運算子),其用法如下

<?php
$v
= 1;

$r = (1 == $v) ? 'Yes' : 'No'; // $r 會被設為 'Yes'
$r = (3 == $v) ? 'Yes' : 'No'; // $r 會被設為 'No'

echo (1 == $v) ? 'Yes' : 'No'; // 將會印出 'Yes'

// 從 PHP 5.3 開始
$v = 'My Value';
$r = ($v) ?: 'No Value'; // $r 會被設為 'My Value',因為 $v 的值會被評估為 TRUE

$v = '';
echo (
$v) ?: 'No Value'; // 將會印出 'No Value',因為 $v 的值會被評估為 FALSE
?>

以上所有範例中的括號都可以省略。
To Top