我目前正在学习PHP,我发现了一些代码,希望有人能帮我解释。当表单输入中出现错误时,我会使用它,因此刷新后输入不会为空,而是包含用户在按下提交之前的输入。
PHP部分
if(isset($_POST['submit'])){
$checkUsername = null; // just in case
$checkUsername = $_POST['username'];
};
HTML部件
<form method="post">
<label for="username" class="control-label">Username</label>
<input name="username" type="text" class="form-control" placeholder="Enter username" value="<?php echo !empty($checkUsername)?$checkUsername:'';?>">
<button type="submit" name="submit" id="submit" class="btn btn-success">Create user</button>
</form>
我没有得到的"捷径"是:
<?php echo !empty($checkUsername)?$checkUsername:'';?>
我通常会这样做:
if(!empty($checkUsername)){
echo $checkUsername;
}else{
echo "";
};
有没有一个网页可以让我查找这种快捷方式?
对此使用三元运算符
echo !empty($checkUsername) ? $checkUsername : "";
其等同于
if(!empty($checkUsername)){
echo $checkUsername;
}else{
echo "";
}
有关详细信息,请参阅此和此。
这被称为Ternary Operator
使用它的方式通常从语言构造、变量赋值或纯表达式语句开始。
示例:
$a=$b====3?1:2;//如果b等于3,$a将是分配为1其他2
match()?go_forward():go_backward();//这调用match函数,如果返回值计算为true,则它将调用
go_forward
函数,否则调用go_backward
功能
以下是官方网站Doc的一小部分描述
从php 5.3版开始,
也可以在表达式中使用
expr1 ?: expr3
如果expr1计算结果为TRUE,则返回expr1,否则返回expr3
使用此:
echo (!empty($checkUsername)) ? $checkUsername: '';
它可以作为"(condition) ? (true return value) : (false return value)"
语句来缩短if/else结构。
<?php echo !empty($checkUsername)?$checkUsername:'';?>
这是一个三元运算符。你可以在PHP文档中阅读更多关于它们的信息
你可以把这个条件写得更短
<?= $checkUsername ?: '';?>
它被称为三元运算符:statement 1 ? statement 2 : statement 3
如果语句1真的解析为语句2,则对语句1进行求值,否则解析为语句3。
你会在更多的语言中看到它,而不仅仅是PHP,它们一开始很难阅读,但后来很方便。