跳转到内容

PHP 编程/if 结构

来自维基教科书,自由的教科书

条件结构

[编辑 | 编辑源代码]

if语句

[编辑 | 编辑源代码]

条件结构 用于控制哪些语句被执行。它们由三个基本元素组成

  • if语句;
  • elseif语句;和
  • if else语句。

PHP 中的条件语句结构类似于 C++Java 中的条件语句结构。结构以一个if子句开始,它由单词“ifif” 后面跟着一个true/false语句,括号括起来( )。随后的代码将包含在一个块中,由大括号{ }表示。有时会省略大括号,只有一行代码紧随其后if语句。elseifelse子句有时会出现在if子句之后,用来测试不同的语句。

if子句的意思是“如果这个语句为真,我希望程序执行以下语句。如果为假,则忽略这些语句。”在技术上,它的工作原理是这样的:当一个if语句被遇到时,true/false语句中的括号内的内容会被评估。如果发现语句为真,则执行紧随其后的包含在大括号内的代码块。但是,如果发现语句为假,程序将跳过这些行并执行下一行非空白行。

if子句之后是两个可选子句elseelseif。该elseif(或else if) 子句的意思是“如果上一个语句为假,让我们看看,如果这个语句为真。如果为真,则执行以下代码。如果为假,则跳过它。”elseif语句只有在上一个if语句的结果为假时才会被评估。否则,它们会被跳过。除此之外,elseif子句的工作原理与普通的if子句相同。如果为真,则执行其代码块,如果为假,则跳过其代码块。

最后,else子句作为一个“兜底”用于if语句。本质上,else语句的意思是“如果所有前面的测试都失败了,那么执行这段代码。”

<?php
$foo = 1;
$bar = 2;
if ($foo == $bar) {
  echo "$foo is equal to $bar.";
} elseif ($foo > $bar) {
  echo "$foo is greater than $bar.";
} else {
  echo "$foo is less than $bar.";
}
?>
<?php
$lower = 10;
$upper = 100;
$needle = 25;
if (($needle >= $lower) && ($needle <= $upper)) {
  echo "The needle is in the haystack.";
} elseif (($needle <= $lower) || ($needle >= $upper)) {
  echo "The needle is outside of the haystack.";
}
?>

条件表达式

[编辑 | 编辑源代码]

条件值 通过基本的 формальной логики 来工作。理解if子句以及其他子句如何评估这些条件值非常重要。

boolean值来考虑是最简单的,这意味着条件值的结果将是 TRUE 或 FALSE,而不是两者兼而有之。例如,如果变量$x = 4,并且用表达式调用条件结构if ($x == 4),则表达式的结果为 TRUE,if结构将执行。但是,如果表达式是($x == 0),则结果为 FALSE,代码将不会执行。这很简单。

当考虑复杂表达式时,情况会变得更复杂。表达式可以连接在一起的两个基本运算符是AND (&&&&) 和OR (||).

||)。

示例

[编辑 | 编辑源代码]我们给出变量$x.

$x = 4;
$y = 8;

$y

($x == 4 AND $y == 8)

给定复杂表达式

我们得到 TRUE 的结果,因为两个单独表达式的结果都为真。当表达式使用 AND 运算符连接时,两边必须为真,整个表达式才为真。

($x == 4 OR $y == 8)

类似地我们也得到TRUE

的结果,因为至少有一个表达式为真。当表达式使用 OR 运算符连接时,至少有一边必须为真,整个表达式才为真。

  ($x == 4 AND $y == 10)

相反地,这个表达式将返回FALSE

,因为整个表达式中至少有一个表达式为假。

  ($x == 4 OR $y == 10)

相反地,我们也得到但是,

,因为整个表达式中至少有一个表达式为真。

代码块

[编辑 | 编辑源代码]{ }代码块是一个或多个语句或命令,它们包含在一对大括号if之间。代码块主要用于循环、条件语句和函数。代码块可以相互嵌套,例如一个

结构在一个函数内的循环中。

如果在某个条件语句之后没有用大括号括起来的代码块,则只执行下一个语句。建议您避免使用这种方法,以防止在代码块之后添加额外代码时发生意外错误。
if (FALSE)
  echo 'FALSE evaluates to true.';
  echo 'Who knew that FALSE was TRUE?';
以下代码将无法按预期工作第二个echoif语句被执行,尽管if语句。

子句。缺少括号导致 if 语句只应用于第一个语句,使得第二个语句无论

语句的结果如何都会被评估。
if (FALSE) {
  echo 'FALSE evaluates to true.';
  echo 'Who knew that FALSE was TRUE?';
}
为了避免此问题,请确保在条件语句中使用括号,即使只执行一行代码。这可以防止在您在现有代码块之后添加额外行时出现上述代码中的错误。


这段代码修复了之前的错误。

这段代码中第二个 echo 语句永远不应该被执行。

简写符号

[编辑 | 编辑源代码]
$money = 535; # $

print 'I have' . ($money > 500 ? '' : 'n’t') . ' enough money.';
如果您正在编写一个长句子,其中有些部分不是静态的,您可以使用 if 语句创建该字符串。PHP 语法允许您在同一行内完成此操作,使用以下简写语法


这段代码在同一行中使用了简写语法。

[编辑 | 编辑源代码]


华夏公益教科书