首頁 後端開發 php教程 詳解PHP中的null合併運算符

詳解PHP中的null合併運算符

Jul 29, 2016 am 09:08 AM
get nobody user

null合併運算子是一個好東西,有了它我們就能很方便的獲取一個參數,並能在其為空的情況下提供一個預設值。例如在js中可以用||來搞:

function setSomething(a){
  a = a || 'some-default-value';
  // ...
}
登入後複製

而在PHP中,可惜PHP的||總是回傳true或false,無法這樣來搞。

 PHP7才正式加入了??這個運算符:

// 获取user参数的值(如果为空,则用'nobody')
$username = $_GET['user'] ?? 'nobody';
// 等价于:
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
登入後複製

 PHP7 估計還有很長時間才能用到生產環境中,那在目前的PHP5中有沒有替代方案呢?

 據研究,完全有個非常便捷的替代方案:

// 获取user参数的值(如果为空,则用'nobody')
$username = @$_GET['user'] ?: 'nobody';
// 等价于:
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
登入後複製

 -- 運行此代碼: https://3v4l.org/aDUW8

瞪大了眼睛看,跟前面的PHP7的例子差不多,主要是把?? 替換為了?: 。 這個是什麼鬼呢?其實這就是(expr1) ? (expr2) : (expr3) 表達式的省略模式:

 表達式(expr1) ? (expr2) : (expr3) 在expr1 求值為TRUE 時的值為expr2,在expr1 求值為FALSE 時的值為expr3。

 自 PHP 5.3 起,可以省略三元運算子中間那部分。表達式 expr1 ?: expr3 在 expr1 求值為 TRUE 時傳回 expr1,否則回傳 expr3。

 -- http://php.net/manual/zh/language.operators.comparison.php

當然,這個替代方案也不是完美的—— 如果$_GET 中沒有'user',會有一條Notice : Undefined index: user 的錯誤,所以需要用@來抑制這個錯誤,或是關閉E_NOTICE 的錯誤。

ps:PHP7 null合併運算符 告別isset()

以前的寫法

$info = isset($_GET['email']) ? $_GET['email'] : ‘noemail';
登入後複製

現在直接這樣寫就可以了

以上就介紹了詳解PHP中的null合併運算符,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1666
14
CakePHP 教程
1425
52
Laravel 教程
1327
25
PHP教程
1273
29
C# 教程
1252
24
如何使用PowerShell自動執行任務 如何使用PowerShell自動執行任務 Feb 20, 2024 pm 01:51 PM

如果您是IT管理員或技術專家,您一定意識到自動化的重要性。尤其對於Windows用戶來說,MicrosoftPowerShell是最佳的自動化工具之一。微軟為滿足您的自動化需求提供了各種工具,無需安裝第三方應用程式。本指南將詳細介紹如何利用PowerShell自動化執行任務。什麼是PowerShell腳本?如果您有使用PowerShell的經驗,您可能已經使用過命令來設定您的作業系統。腳本是.ps1檔案中這些指令的集合。 .ps1檔案包含由PowerShell執行的腳本,例如基本的Get-Help

java如何發起http請求呼叫post與get接口 java如何發起http請求呼叫post與get接口 May 16, 2023 pm 07:53 PM

一、java調用post介面1、使用URLConnection或HttpURLConnectionjava自帶的,無需下載其他jar包URLConnection方式調用,如果介面回應碼被服務端修改則無法接收到返回報文,只能當回應碼正確時才能接收到回傳publicstaticStringsendPost(Stringurl,Stringparam){OutputStreamWriterout=null;BufferedReaderin=null;StringBuilderresult=newSt

Curl Get指令的範例 Curl Get指令的範例 Mar 20, 2024 pm 06:56 PM

在Linux中,URL或Curl客戶端是一個流行的命令列實用程序,允許您使用HTTPS、HTTP、FTP等多種協定在網路上傳輸資料。它允許您使用其get、post和request方法發送和接收資料。其中,你需要經常使用“get”方法。因此,學習各種方法和各種選項,你可以用來提高你的生產力變得至關重要。 「執行捲曲操作非常簡單,只需輸入幾個簡單的命令即可完成。儘管這看似簡單,但許多用戶並未充分認識到其潛力。因此,這篇簡短指南提供了一些關於在Linux系統中使用“curlget”命令的實例。”Curl

SpringBoot怎麼用實體接收Get請求傳遞過來的多個參數 SpringBoot怎麼用實體接收Get請求傳遞過來的多個參數 May 19, 2023 pm 06:01 PM

一、Controller層不帶任何註解接收參數第一種方法是最簡單的,嚴重懷疑以前怎麼沒用,誰知道呢。 。不過這次是真的管用了,最簡單的方式就是Controller介面入參不加任何註解! ! ! SpringBoot自動做了處理。程式碼如下:/***@authorzhangzhixiang*@sincev1.0.0*/@RestController@RequestMapping(path="/ui/institution")publicclassInstitutionManagemen

如何更改Ubuntu的apt-get更新來源? 如何更改Ubuntu的apt-get更新來源? Jan 05, 2024 pm 03:40 PM

手動修改Ubuntu的apt-get來源1、用ssh工具連接到Ubuntu(我用的xshell)2、命令列敲入cd/etc/apt/3、備份此目錄下的source.list檔(要有sudo權限),此時就有了一個source.list.bak檔4、清空source.list檔內容(註:清空後不可恢復,所以需要執行上一步提前備份一下這個檔),此時用sudo提示權限不夠,直接切換到root用戶下執行這條指令5、用vim開啟source.list,按i鍵進入編輯模式把要修改的來源位址貼進來,然後按

docker掛載目錄權限問題怎麼解決 docker掛載目錄權限問題怎麼解決 Feb 29, 2024 am 10:04 AM

在Docker中,掛載目錄的權限問題通常可以透過以下方法解決:使用-v參數指定掛載目錄時新增權限相關的選項。可以透過在掛載的目錄後面新增:ro或:rw來指定掛載目錄的權限,分別表示只讀和讀寫權限。例如:dockerrun-v/host/path:/container/path:roimage_name在Dockerfile中定義USER指令來指定容器中執行的用戶,以確保容器內部的操作符合權限要求。例如:FROMimage_name#CreateanewuserRUNuseradd-ms/bin/

深入解析jQuery中get方法和post方法的異同 深入解析jQuery中get方法和post方法的異同 Feb 24, 2024 pm 12:15 PM

jQuery中get和post是兩種常用的ajax請求方法,用於向伺服器發送請求並獲取資料。它們在使用方式和一些特性上有一些不同,接下來我們將詳細解釋它們的異同點,並附上具體的程式碼範例。 get和post的相同點:都是用來傳送ajax請求的方法,可以透過指定URL和資料參數來從伺服器取得資料。都可以接受回呼函數作為參數,用於處理伺服器傳回的資料或處理請求失敗的

比較jQuery中get和post方法的適用情況 比較jQuery中get和post方法的適用情況 Feb 25, 2024 pm 08:18 PM

標題:jQuery中get和post的使用場景對比jQuery是一個流行的JavaScript庫,提供了豐富的功能以簡化Web開發。其中,常用的Ajax方法包括get和post,用於在不刷新整個頁面的情況下向伺服器發送請求。本文將重點放在比較get和post方法的使用場景,以及提供具體程式碼範例。一、get方法的使用場景及範例:取得資料:get方法適合用於從伺服器

See all articles