简单的问题。这是这段代码。
$r = rand(0,1);
$c = ($r==0)? rand(65,90) : rand(97,122);
$inputpass .= chr($c);
我理解它在结束结果中的作用,但我想更好地解释它是如何工作的,所以我可以自己使用它。对不起,如果这是一个糟糕的问题。
如果你不确定我在问什么,那么这里使用的是(功能?):
$c = ($r==0)? rand(65,90) : rand(97,122);
答案 0 :(得分:7)
这被称为三元运算符。它实际上相当于
if ($r == 0) {
$c = rand(65, 90);
} else {
$c = rand(97, 122);
}
但它显然更紧凑。查看docs了解详情。
答案 1 :(得分:1)
这只是意味着:
if($r==0){
$c = rand(65,90);
else{
$c = rand(97,122);
}
如果该语句为真,则执行?
之后的第一个操作,否则执行:
之后的操作。
它被称为ternary operator。
答案 2 :(得分:0)
<?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'];
}
?>
表达式(expr1)? (expr2):如果expr1的计算结果为TRUE,则(expr3)求值为expr2;如果expr1求值为FALSE,则求expr3。 从PHP 5.3开始,可以省略三元运算符的中间部分。表达式expr1?:expr3如果expr1的计算结果为TRUE则返回expr1,否则返回expr3。
答案 3 :(得分:0)
它被称为三元运算符。它类似于if / else构造,但区别在于使用三元运算符的表达式产生一个值。
也就是说,您不能将变量设置为if / else结构的结果:
// this doesn't work:
$c = if ($r == 0) {
rand(65, 90);
} else {
rand(97, 122);
}
您可以在此处详细了解:http://php.net/ternary#language.operators.comparison.ternary
三元运算符经常被误用。在您展示的示例中使用它几乎没有什么好处。有些程序员喜欢使用紧凑syntactic sugar,即使它不需要。或者甚至在写出完整的if / else构造时更清楚。
如果您使用测量测试所涵盖的代码行的工具,则三元运算符也会模糊测试覆盖率。