php 三元運算符的使用介紹

来源:http://www.cnblogs.com/manongjc/archive/2016/02/24/5211857.html
-Advertisement-
Play Games

我們寫PHP的時候,可能if{...}else{...}用的是最多的,但是有時候,我們可以用C裡邊的三元運算,可以使代碼精減很多!本文章講述我在php開發中使用三元運算的一些技巧和需要註意的地方。需要的碼農可以參考一下。 今天一個網友在群里發了個題目不難,但是可能會錯 echo $a == 1 ?


我們寫PHP的時候,可能if{...}else{...}用的是最多的,但是有時候,我們可以用C裡邊的三元運算,可以使代碼精減很多!本文章講述我在php開發中使用三元運算的一些技巧和需要註意的地方。需要的碼農可以參考一下。

 

今天一個網友在群里發了個題目不難,但是可能會錯 

echo 
$a == 1 ? 'one' : 
$a == 2 ? 'two' : 
$a == 3 ? 'three' : 
$a == 4 ? 'foura' : 'other'; 
echo "\n"; 

輸出結果是:

<BR> 

結果是:four 

 

一開始想不明白,按照我的理解,應該是這樣的邏輯: 
echo ($a == 1 ? 'one' : 
( $a == 2 ? 'two' : 
( $a == 3 ? 'three' : 
($a == 4 ? 'four' : 'other')))); 
輸出為:two 

 

後來在kevinG(qq:48474)的指教下,參看php手冊,終於明白了php的三元符的解釋是從左到右的, 
<!--?php 
// 乍看起來下麵的輸出是 'true' 
echo (true?'true':false?'t':'f'); 

// 然而,上面語句的實際輸出是't',因為三元運算符是從左往右計算的 

// 下麵是與上面等價的語句,但更清晰 
echo ((true ? 'true' : 'false') ? 't' : 'f'); 

所以上面的可以這樣解釋: 
echo ( 
((($a == 1 ? 'one' : 
$a == 2) ? 'two' : 
$a == 3 )? 'three' : 
$a == 4 )? 'four' : 'other'); 

其實這個涉及到類型轉換: 
$a==1=>false=>$a==2?true=>'two'=true=>'three'=true=>'four'


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 需求表均同springmvc案例 此處只是使用maven 註意,以下所有需要建立在你的eclipse等已經集成配置好了maven了,說白了就是新建項目的時候已經可以找到maven了 沒有的話需要安裝maven 1.新建maven項目,如果不在上面,請到other裡面去找一下 2,進入maven項目之
  • //定義編碼 header( 'Content-Type:text/html;charset=utf-8 '); //Atom header('Content-type: application/atom+xml'); //CSS header('Content-type: text/css');
  • Thinkphp join 連接查詢
  • 去年升級過一個老的netty3的程式到netty4,近期突然註意到一個問題,就是這個程式隨著時間虛擬記憶體會不斷升高.之前升級的時候擔心存在記憶體泄露,所以還特意用jstate跟蹤過gc回收的情況,並沒有異常.雖然當時也發覺記憶體占用有緩慢升高的趨勢也沒有特別在意,僅做觀察處理. 由於同機器上還有另一個n
  • 早該進入資料庫的學習了,不過在師父張薄的指導下我還是先把之前的VB再系統的整合一下,就像米老師說的,先把基礎打好、起初的慢是為了以後的塊,相信沒錯的、 下麵是我對整個VB學習的整理、 第二章、vb語言基礎、 第三章、vb控制結構 第四章、常用內部控制項、 第五章、數組、、
  • 在網上找了好久 才找到答案 分享給大家 http://www.zcool.com.cn/article/ZMzYwNTI=.html
  • C++中的普通函數與類相關的函數
  • 已知補碼求真值可以套用一下公式: [X]補=XnXn-1Xn-2.......X2X1X0, 則計算X的真值公式: 舉個例子: 1、[X]補=01111010 調用上面的公式 x=-27*0+26 *1 +25 *1+24 *1+23 *1+21 *1+20 *0 =64+32+16+8+2 =12
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...