使用PHP编写条件语句有哪些不同的写法?
我知道以下
的例子if($test == 1){
}else{
}
和
if($test == 1)
echo 'asdsa';
else
echo 'sdaaa';
答案 0 :(得分:11)
有alternative control structure syntax:
if ($text == 1):
echo 'asdsa';
else:
echo 'asdsa';
endif;
答案 1 :(得分:8)
另一种方法是使用ternary operator。 PHP文档中的示例是:
<?php
// Example usage for: Ternary Operator
$action = (empty($_POST['action'])) ? 'default' : $_POST['action'];
// The above is identical to this if/else statement
if (empty($_POST['action'])) {
$action = 'default';
} else {
$action = $_POST['action'];
}
?>
另一个control structures are documented in the PHP manual。唯一的条件语句是三元条件运算符if
(和else
),elseif
或else if
。但是,他们确实有an alternative syntax。
答案 2 :(得分:6)
echo ($test == 1) ? 'asdsa' : 'sdaaa';
答案 3 :(得分:4)
除了已经说过的内容之外,还有像
这样的东西$sql_link = mysql_connect('localhost', 'root') or die('no mysql');
或者像Alternative syntax for control structures
一样(赋值“OR”技巧实际上是一招)如果mysql_connect()没有变为true,PHP会尝试评估第二个表达式,所以这真的是一个黑客:
if (mysql_connect('localhost', 'root')) {
$sql_link = true;
}
else {
die('no mysql');
}
)
答案 4 :(得分:3)
不要忘记“条件复杂性”是一种代码气味。 Polymorphism是你的朋友。
条件逻辑在其初期是无辜的,当它易于理解并包含在其中时 几行代码。不幸的是,它很少老化。您实现了几个新功能 突然你的条件逻辑变得复杂和膨胀。 [Joshua Kerevsky:重构模式]
你可以做的最简单的事情之一是避免嵌套if块学会使用Guard Clauses。 (注意:这不是PHP语法。将其视为伪代码。这里的技术非常重要。)
double getPayAmount() {
if (_isDead) return deadAmount();
if (_isSeparated) return separatedAmount();
if (_isRetired) return retiredAmount();
return normalPayAmount();
};
我发现的另一件事情很简单,它使你的代码自我记录,是Consolidating conditionals。
double disabilityAmount() {
if (isNotEligableForDisability()) return 0;
// compute the disability amount
与条件表达式相关的其他有价值的refactoring技术包括Decompose Conditional,Replace Conditional with Visitor和Reverse Conditional。
既然你有一些新的锤子,不要让一切看起来像钉子!
答案 5 :(得分:3)
标准if语句:
if(expression) {
// code
} elseif(expression) {
// code
} else {
// code
}
在每个语句后没有用于单行代码的大括号:
if(expression)
// single line of code
elseif(expression)
// single line of code
else
// single line of code
备用控制语法:
if(expression):
// code
elseif(expression):
// code
else:
// code
endif;
最后,三元运营商:
(expression ? expression_if_true : expression_if_false);
也可以写成:
(expression) ? expression_if_true : expression_if_false;
如果您愿意,可以完全没有括号。
答案 6 :(得分:2)
if($test == 1){
}else{
}
# can only be used if performing 1 line of code after statement
if($test == 1)
echo 'asdsa';
else
echo 'sdaaa';
#you can have as many elseif as you like (but you may wish to check out switch see below:
if($test == 1){
}elseif{
}else{
}
另请查看switch() http://php.net/manual/en/control-structures.switch.php
switch($test)
{
case "1" :
break;
case "2" :
break;
default :
break;
}
答案 7 :(得分:1)
直接来自PHP manual:
<?php
if ($a == 5):
echo "a equals 5";
echo "...";
elseif ($a == 6):
echo "a equals 6";
echo "!!!";
else:
echo "a is neither 5 nor 6";
endif;
?>