《PHP實(shí)戰(zhàn):詳解PHP中的null合并運(yùn)算符》要點(diǎn):
本文介紹了PHP實(shí)戰(zhàn):詳解PHP中的null合并運(yùn)算符,希望對(duì)您有用。如果有疑問(wèn),可以聯(lián)系我們。
null合并運(yùn)算符是一個(gè)好東西,有了它我們就能很方便的獲取一個(gè)參數(shù),并能在其為空的情況下提供一個(gè)默認(rèn)值.好比在js中可以用||來(lái)搞:PHP實(shí)例
function setSomething(a){ a = a || 'some-default-value'; // ... }
而在PHP中,惋惜PHP的||總是返回true或false,無(wú)法這樣來(lái)搞.PHP實(shí)例
?PHP7才正式參加了??這個(gè)運(yùn)算符:PHP實(shí)例
// 獲取user參數(shù)的值(如果為空,則用'nobody') $username = $_GET['user'] ?? 'nobody'; // 等價(jià)于: $username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
?PHP7 估計(jì)還有很長(zhǎng)時(shí)間能力用到生產(chǎn)環(huán)境中,那在目前的PHP5中有沒(méi)有替代方案呢?PHP實(shí)例
?據(jù)研究,完全有個(gè)非常便捷的替代計(jì)劃:PHP實(shí)例
// 獲取user參數(shù)的值(假如為空,則用'nobody') $username = @$_GET['user'] ?: 'nobody'; // 等價(jià)于: $username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
?-- 運(yùn)行此代碼: https://3v4l.org/aDUW8PHP實(shí)例
瞪大了眼睛看,跟前面的PHP7的例子差不多,主要是把 ?? 替換為了 ?: . 這個(gè)是個(gè)什么鬼呢?其實(shí)這便是 (expr1) ? (expr2) : (expr3) 表達(dá)式的省略模式:PHP實(shí)例
?表達(dá)式 (expr1) 必修 (expr2) : (expr3) 在 expr1 求值為 TRUE 時(shí)的值為 expr2,在 expr1 求值為 FALSE 時(shí)的值為 expr3.PHP實(shí)例
?自 PHP 5.3 起,可以省略三元運(yùn)算符中間那部分.表達(dá)式 expr1 ?: expr3 在 expr1 求值為 TRUE 時(shí)返回 expr1,不然返回 expr3.PHP實(shí)例
?-- http://php.net/manual/zh/language.operators.comparison.php
PHP實(shí)例
當(dāng)然,這個(gè)替代方案也不是完美的 ―― 如果 $_GET 中沒(méi)有 'user',會(huì)有一條 Notice: Undefined index: user 的錯(cuò)誤,所以必要用@來(lái)抑制這個(gè)錯(cuò)誤,或者關(guān)閉 E_NOTICE 的錯(cuò)誤.PHP實(shí)例
ps:PHP7 null合并運(yùn)算符 離別isset()PHP實(shí)例
以前的寫法PHP實(shí)例
$info = isset($_GET['email']) ? $_GET['email'] : ‘noemail';
如今直接這樣寫就可以了PHP實(shí)例
$info = $_GET['email'] ?? noemail;
還可以如許連寫使用PHP實(shí)例
$info = $_GET['email'] 必修必修 $_POST['email'] 必修必修 ‘noemail';
《PHP實(shí)戰(zhàn):詳解PHP中的null合并運(yùn)算符》是否對(duì)您有啟發(fā),歡迎查看更多與《PHP實(shí)戰(zhàn):詳解PHP中的null合并運(yùn)算符》相關(guān)教程,學(xué)精學(xué)透。維易PHP學(xué)院為您提供精彩教程。
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/7948.html