」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > PHP 中的 Elvis 運算子是什麼以及它如何運作?

PHP 中的 Elvis 運算子是什麼以及它如何運作?

發佈於2024-11-19
瀏覽:291

What is the Elvis operator in PHP and how does it work?

馴服PHP 中的Elvis 運算子(?:)

神秘的?: 運算子為某些PHP 程式碼增色不少,讓您感到困惑。這篇簡明的文章深入探討了其神秘的本質,並揭示了其真正的目的。

揭開 ?: 運算子

?: 運算符,也稱為「Elvis 運算符, " 功能類似三元運算符。然而,它的獨特之處在於沒有一個表達式來評估謂詞是否為真。以下是其行為的細分:

如果左操作數為真,即不為空、空字串、假或零,則計算結果為 左操作數
如果左操作數為 falsy,它的計算結果為 右操作數
最重要的是,左操作數的表達式僅計算一次,確保了效率。

說明性範例

為了進一步闡明,請考慮以下程式碼片段:

$items = $items ?: $this->_handle->result('next', $this->_result, $this);

在此實例中,如果$items為真(非空或非空),則 $items 的值將分配給其自身。但是,如果 $items 為假,則 $this->_handle->result('next', $this->_result, $this) 的結果將會被指派給 $items。這透過提供預設值有效地處理未定義的值。

其他應用

?: 運算子在自我檢測場景中也被證明很有用:

foo = foo ?: bar;

這裡,如果foo 為null 或false,則foo 將被賦予bar 的值。否則, foo 保持不變。

多功能性展示

為了說明其多功能性,請考慮以下範例:

var_dump(5 ?: 0); // 5
var_dump(false ?: 0); // 0
var_dump(null ?: 'foo'); // 'foo'
var_dump(true ?: 123); // true
var_dump('rock' ?: 'roll'); // 'rock'
var_dump('' ?: 'roll'); // 'roll'
var_dump('0' ?: 'roll'); // '0'
var_dump('42' ?: 'roll'); // '42'

“貓王接線員”的由來

其獨特的綽號“貓王接線員”的由來

What is the Elvis operator in PHP and how does it work? 
其獨特的綽號“貓王接線員「源自於其與貓王貓王(Elvis Presley) 頭髮的相似性。正如艾維斯的頭髮要么是濃密的蓬巴杜髮型,要么是光滑的後背,運算符的左操作數要么是真,要么是假,決定了結果值。

最新教學 更多>
  • Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta:列偏移的刪除和恢復Bootstrap 4 在其Beta 1 版本中引入了重大更改柱子偏移了。然而,隨著 Beta 2 的後續發布,這些變化已經逆轉。 從 offset-md-* 到 ml-auto在 Bootstrap 4 Beta 1 中, offset-md-*...
    程式設計 發佈於2024-11-19
  • 儘管程式碼有效,為什麼 POST 請求無法擷取 PHP 中的輸入?
    儘管程式碼有效,為什麼 POST 請求無法擷取 PHP 中的輸入?
    解決PHP 中的POST 請求故障在提供的程式碼片段:action=''而非:action="<?php echo $_SERVER['PHP_SELF'];?>";?>"檢查$_POST陣列:表單提交後使用 var_dump 檢查 $_POST 陣列的內容...
    程式設計 發佈於2024-11-19
  • 為什麼 GCC 無法使用初始化清單初始化 std::array?
    為什麼 GCC 無法使用初始化清單初始化 std::array?
    初始化清單和std::array:GCC BugC 標準庫中的std::array 類別提供了一個固定的-大小數組容器。人們普遍認為此類支援初始化列表。 但是,使用GCC 4.6.1,嘗試使用以下語法初始化std::array 實例會失敗:std::array<std::string, 2&g...
    程式設計 發佈於2024-11-19
  • 為什麼實體框架精靈在整合 MySQL 時崩潰?
    為什麼實體框架精靈在整合 MySQL 時崩潰?
    Entity Framework 精靈在MySQL 資料庫整合中遇到錯誤Entity Framework (EF) 提供資料庫優先的建模功能,允許與各種SQL Server 和MySQL 等資料庫。但是,在針對 MySQL 資料庫更新模型時,使用者在 EF 精靈期間可能會遇到崩潰。 其中一個場景是當...
    程式設計 發佈於2024-11-19
  • 我的第一個數據分析項目
    我的第一個數據分析項目
    簡介與目標 在我的資料分析專案中,我進行了全面的分析工作流程,以滿足現代組織對資料驅動決策日益增長的需求。我的主要目標是建立資料庫連接並進行徹底的分析程序以提取有意義的見解。透過實施機器學習演算法和先進的視覺化技術,我開發了一個框架,將原始資料轉換為可操作的情報,從而實現戰略決策過程。我的方法著重...
    程式設計 發佈於2024-11-19
  • 如何解決 Go HTTP 請求中的「需要代理驗證」錯誤?
    如何解決 Go HTTP 請求中的「需要代理驗證」錯誤?
    Go中HTTP請求的代理認證當使用經過認證的代理IP地址進行HTTP請求時,你可能會遇到“需要代理認證” “錯誤。所示:auth := "username:password" basicAuth := "基本" base64.StdEncoding.Encod...
    程式設計 發佈於2024-11-19
  • 了解網頁抓取
    了解網頁抓取
    網頁抓取是使用機器人從網站提取資料的過程,它涉及透過以程式設計方式檢查所需的特定資訊來從網頁獲取內容,其中可能包括文字、圖片、價格、網址和標題。 筆記 網路抓取必須負責任地進行,尊重服務條款和法律準則,因為某些網站限制資料提取。 網頁抓取的應用程式 電子商務 - 監控競爭對手之間的價格趨勢和產品...
    程式設計 發佈於2024-11-19
  • 如何使用 Launch4j 為 Java 程式建立 .exe 檔案?
    如何使用 Launch4j 為 Java 程式建立 .exe 檔案?
    為Java 程式建立.exe借助以下工具可以輕鬆實現將Java 程式轉換為Windows 的.exe Launch4j,一個免費的開源工具。操作方法如下:安裝 Launch4j: 造訪 Launch4j 網站並下載適合您平台的最新穩定版本。像任何其他軟體一樣安裝它。 建立 Launch4j 配置: ...
    程式設計 發佈於2024-11-19
  • 如何使用 HTMLnd JavaScript 將條碼插入 PDF 文檔
    如何使用 HTMLnd JavaScript 將條碼插入 PDF 文檔
    Inserting barcodes into PDF documents can significantly streamline document management, tracking, and data processing workflows. Barcodes serve as uni...
    程式設計 發佈於2024-11-19
  • 行偏移如何優化大型文字檔案中的跳行?
    行偏移如何優化大型文字檔案中的跳行?
    優化大型文本文件中的跳行在查找特定行時,逐行處理大量文本文件可能效率低下。提供的程式碼迭代 15MB 檔案的每一行以達到所需的行號,忽略了所需行可能位於檔案中較早的位置這一事實。 另一種方法要解決此問題,請考慮採用利用線路偏移的最佳化技術。這涉及讀取整個檔案一次以建構一個包含每行起始偏移量的清單。 ...
    程式設計 發佈於2024-11-19
  • 如何在 PHP 中組合兩個關聯數組,同時保留唯一 ID 並處理重複名稱?
    如何在 PHP 中組合兩個關聯數組,同時保留唯一 ID 並處理重複名稱?
    在 PHP 中組合關聯數組在 PHP 中,將兩個關聯數組組合成一個數組是常見任務。考慮以下請求:問題描述:提供的代碼定義了兩個關聯數組,$array1 和 $array2。目標是建立一個新陣列 $array3,它合併兩個陣列中的所有鍵值對。 此外,提供的陣列具有唯一的 ID,而名稱可能重疊。要求是建...
    程式設計 發佈於2024-11-19
  • 在 Go 中使用 WebSocket 進行即時通信
    在 Go 中使用 WebSocket 進行即時通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSocke...
    程式設計 發佈於2024-11-19
  • 如何使用遞歸宏迭代宏參數?
    如何使用遞歸宏迭代宏參數?
    宏參數上的 Foreach 宏在程式設計領域,宏提供了執行重複任務的便捷方法。然而,嘗試建立一個迭代另一個巨集的參數的巨集可能會帶來挑戰。讓我們探討如何克服這個障礙並深入研究遞歸宏的領域。 遞歸巨集可用來遍歷傳遞給巨集的參數清單。然而,這種方法可能容易出錯,因為它可能會導致無限遞歸。為了解決這個問題...
    程式設計 發佈於2024-11-19
  • 大批
    大批
    方法是可以在物件上呼叫的 fns 數組是對象,因此它們在 JS 中也有方法。 slice(begin):將陣列的一部分提取到新數組中,而不改變原始數組。 let arr = ['a','b','c','d','e']; // Usecase: Extract till index ...
    程式設計 發佈於2024-11-19

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3