2015-11-23 49 views
-2

我目前正在學習PHP,我發現了一些代碼,我希望有人能幫我解釋一下。我在表單輸入中出現錯誤時使用它,因此輸入在刷新後不會爲空,但包含用戶在按下提交之前的輸入。PHP快捷方式如果stades

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 ""; 
}; 

有沒有可以查找這種快捷方式的網頁?

+1

你可以使用'echo!empty($ chckusername)? $ checkUsername:'''。 [看看這裏](https://davidwalsh.name/php-ternary-examples)。 – Andrew

+0

讓我想知道你們正在忙着回答已經回答過的問題。可以查找這個關於PHP的回答[立即如果](http://stackoverflow.com/questions/2092642/what-is-this-iif-in-php-means)。 – kayess

+0

if - ? - :語法是:if ? <條件爲真時動作>:<條件爲假時動作> – Fuzzzzel

回答

1

這就是所謂的Ternary Operator

你使用它往往先從語言結構,變量賦值的方式,或只是簡單的表達語句。

實例:

$ a = $ B === 3? 1:2; //如果b等於3,$ a將會 指定爲1,否則2

匹配()? go_forward():go_backward(); //這個 調用匹配函數,如果返回值的計算結果爲真,那麼 它會調用go_forward功能否則它調用go_backward 功能

這裏是一個小部分來自官方網站的介紹,Doc

從PHP版本5。3起,

,你也可以用它在表達expr1 ?: expr3,它 將返回EXPR1如果expr1的值爲TRUE,而表達式3否則

1

使用此:

echo (!empty($checkUsername)) ? $checkUsername: ''; 

它的工作原理爲"(condition) ? (true return value) : (false return value)"語句來縮短您的if/else結構。

2

使用三元運營商爲此

echo !empty($checkUsername) ? $checkUsername : ""; 

其equivallent到

if(!empty($checkUsername)){ 
    echo $checkUsername; 
}else{ 
    echo ""; 
} 

有關更多信息,請參見thisthis

0
<?php echo !empty($checkUsername)?$checkUsername:'';?> 

這是一個三元運算符。你可以在PHP docs

閱讀更多關於他們可以寫這種情況下更短

<?= $checkUsername ?: '';?> 
0

這就是所謂的一個三元運算符:statement 1 ? statement 2 : statement 3 聲明1評估,如果它是真的,則解析爲語句2,否則,解析爲語句3.

您將會看到更多的語言,而不僅僅是PHP,它們起初很難閱讀,但後來便捷的簡寫。