if雄蕊的PHP快捷方式


PHP shortcut for if stament

我目前正在学习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,它们一开始很难阅读,但后来很方便。