PHP的打印語句

文章目錄

  • 環境
  • 總結
    • 打印語句
    • 換行符
    • 括號
    • 數組(對象)和字符串之間的相互轉換
  • 打印語句
    • echo
    • print
    • 括號
    • print_r
    • var_dump
  • 數組(對象)和字符串之間的轉換
    • json_encode
    • json_decode
    • implode
    • explode

環境

  • PHP 8.4.5

總結

如果不想看詳細介紹,可以直接看總結。

打印語句

  • echo
    • 最常用,最推薦的打印語句
    • 不是函數,括號可有可無(個人建議不加括號)
    • 可以打印多個值,用逗號分隔
  • print
    • 不是函數,括號可有可無(個人建議不加括號)
    • 總是返回 1
    • 只能打印一個值
    • 性能略差于 echo
  • print_r
    • 調試常用
    • 特別適合打印數組、對象等復雜的數據結構
    • 若把第二個參數設置為true,則并不打印,而是返回要打印的內容(字符串)
  • var_dump
    • 調試常用
    • print_r 顯示更多詳細信息,比如數據類型、字符串長度,等等
    • 沒有返回值
    • 可以打印多個值,用逗號分隔

換行符

  • 命令行
    • PHP_EOL (推薦)
    • \n
    • 字符串本身跨行
  • 網頁
    • <br> (或者 <br/>
    • nl2br() 結合 PHP_EOL\n
    • <pre>...</pre> 結合 PHP_EOL\n

括號

echoprint 不是函數,括號可有可無。個人建議不要加括號,因為括號非但不起作用,反而會誤導人。

數組(對象)和字符串之間的相互轉換

  • json_encode :把對象或者數組轉換為JSON格式的字符串
  • json_decode :把JSON格式的字符串轉換為對象或者數組
  • implode :把數組元素連接成一個字符串
  • explode :把字符串分割為數組

打印語句

PHP常見的打印語句有:

  • echo
  • print
  • print_r
  • var_dump

下面詳細介紹一下。

echo

echo' 是最簡單的打印語句。

echo "Hello World";

或者

echo("Hello World");

關于有沒有括號的區別,下面會有詳細介紹。

注意:echo語句的輸出結果不會自動換行。比如:

echo("abc");
echo("def");
  • 在命令行下輸出:
PS C:\xampp\htdocs> php test1.php
abcdef
  • 在網頁上輸出:

在這里插入圖片描述

如果需要換行的話,在命令行下和網頁下的方法有所不同。

要在命令行輸出換行,推薦使用 PHP_EOL

echo("abc" . PHP_EOL ."def");

或者也可以用 \n (兼容性沒有 PHP_EOL 好):

echo("abc\ndef");

還有一種方法是直接在字符串里換行:

echo("abc
def");

注:單引號和雙引號都可以。

上面這幾種換行方式只對命令行有效,在頁面里,它們只會轉化為一個空格,比如:

在這里插入圖片描述

要想在頁面上實現換行,需要使用 <br> (或 <br/> )標簽:

echo("abc<br>def");

或者使用 nl2br() 來轉換:

echo(nl2br("abc\ndef"));echo(nl2br("abc" . PHP_EOL . "def"));

或者使用 <pre>...</pre> 來保留格式:

echo("<pre>abc\ndef</pre>");echo("<pre>abc" . PHP_EOL . "def</pre>");

對于 <pre>...</pre> ,字體會有些不太一樣:

在這里插入圖片描述

echo語句可以打印多個值,用逗號分隔,比如:

echo "abc", "def";

輸出結果里, abcdef 是連著的。

注:不能用括號的方式打印多個值。

print

printecho 很類似,區別在于:

  • print 有返回值 1 ,而 echo 沒有返回值(但是有返回值又有什么用呢?)
  • print 無法打印多個值
  • print 性能略低于 echo (但差別不大)

總之,推薦使用 echo

括號

echoprint 不是函數,而是語言結構,所以括號不是必需的。

事實上,括號可能會產生意想不到的作用,看下面的代碼:

print ("A") && print ("B");

運行結果是什么?

看起來,輸出結果似乎應該如下:

AB

但其實并不是這樣,實際上輸出結果為:

B1

這是為什么呢?

原因在于, print 并不是函數,括號其實是不起作用的,完全可以移除。也就是說,上面的代碼就相當于:

print "A" && print "B";

根據優先級,該代碼也就相當于:

print ("A" && print "B"); // 括號并不起作用,只是為了方便表示優先級

所以,會先打印出 B ,然后再打印出 1 (也就是true)。

問題是,這樣的代碼:

print ("A") && print ("B");

迷惑性太大了。

由此看來, echoprint 語句最好還是別加括號了,因為括號不但不起作用,反而會誤導人。

print_r

print_rprint 的區別在于,它特別適合打印數組、對象等復雜的數據結構。

$person = ["name" => "Tom", "age" => 25];print_r($person);

輸出結果如下:

Array
([name] => Tom[age] => 25
)

print($person) 結果如下:

PHP Warning:  Array to string conversion in C:\xampp\htdocs\test1.php on line 5
PHP Stack trace:
PHP   1. {main}() C:\xampp\htdocs\test1.php:0
Array

可見,PHP報了一個warning,然后只打印出了 Array 的字樣。

另一個區別在于, print_r 可以有第二個參數,是 bool 類型的,默認值是false。如果設置為true,則并不實際打印,而是返回一個字符串,也就是原本要輸出的內容。

print_r 非常適合調試復雜數據(比如數組、對象)。

var_dump

var_dumpprint_r 類似,區別在于 var_dump 能夠顯示更多詳細信息,比如數據類型、字符串長度,等等。

$person = ["name" => "Tom", "age" => 25];var_dump($person);

輸出結果如下:

array(2) {'name' =>string(3) "Tom"'age' =>int(25)
}

另外, var_dump 的參數可以是多個,和 echo 類似。

var_dump 沒有返回值。

數組(對象)和字符串之間的轉換

json_encode

把對象或者數組轉換為JSON格式的字符串。

$person = ["name" => "張三", "age" => 25];$str = json_encode($person);echo $str;

輸出結果如下:

{"name":"\u5f20\u4e09","age":25}

常用選項:

  • JSON_PRETTY_PRINT :完美打印(比如換行、縮進等)
  • JSON_UNESCAPED_UNICODE :不轉義 Unicode 字符,使中文等非 ASCII 字符能正確顯示

比如:

$person = ["name" => "張三", "age" => 25];$str = json_encode($person, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);echo $str;

輸出結果如下:

{"name": "張三","age": 25
}

json_decode

將JSON格式的字符串轉換為數組或對象。

$str = '{"name":"張三","age":25}';$x = json_decode($str);echo gettype($x) . PHP_EOL; // objectecho $x->name;

輸出結果如下:

object
張三

本例中,把JSON字符串轉換為PHP對象。

第二個參數表示是否轉換為關聯數組,默認值是false,如果設置為true:

$str = '{"name":"張三","age":25}';$x = json_decode($str, true);echo gettype($x) . PHP_EOL; // arrayecho $x["name"];

輸出結果如下:

array
張三

可見,把JSON字符串轉換為關聯數組。

implode

把數組元素連接成一個字符串。比如:

$arr = ['apple', 'banana', 'cherry'];$str = implode(', ', $arr);echo $str; // apple, banana, cherry

如果是多維數組,就不行了:

$arr = ['a', ['b', 'c'], 'd'];$str = implode(', ', $arr);echo $str; // a, Array, d

implode 有個別名 join ,顯然這個名字更貼切。

explode

把字符串分割為數組,比如:

$str = "apple,banana,cherry";$arr = explode(',', $str);print_r($arr);

輸出結果如下:

Array
([0] => apple[1] => banana[2] => cherry
)

注意:對于空字符串( '' ), explode 會返回一個包含空字符串的數組 ['']

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/87898.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/87898.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/87898.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

功率MOSFET的SOA曲線

功率MOSFET的SOA曲線 SOA區指的是MOSFET的安全工作區&#xff0c;英文表示為Safe Operating Area&#xff0c;是指MOSFET&#xff08;金屬氧化物半導體場效應晶體管&#xff09;的安全操作范圍。在線性模式運行的情況下&#xff0c;SOA特別有用。但開關模式下&#xff0c;一般…

Stacking集成BP神經網絡/RF/SVM和遺傳算法的煤炭配比優化

一、煤炭配比優化的問題本質與技術路線 煤炭配比需同時滿足煤質指標&#xff08;灰分、揮發分、熱值&#xff09;、燃燒特性&#xff08;著火溫度、燃盡指數&#xff09;、經濟成本等多目標優化。傳統方法依賴經驗公式&#xff0c;難以處理非線性關系&#xff1a; 核心難點&a…

Unity Shader開發-著色器變體(2)-定義著色器變體

一.定義著色器變體 定義一個著色器變體&#xff08;Shader Variant&#xff09;從概念和實現上講&#xff0c;主要包括以下幾個核心部分 1.使用預編譯指令來聲明變體關鍵字 關鍵字是驅動變體生成的“開關”。它們是簡單的字符串標識符&#xff0c;用于在 Shader 代碼中標記不…

sql server耗時模擬

REATE PROCEDURE SimulateDelay AS BEGINPRINT 開始耗時操作...;-- 模擬等待 5 秒WAITFOR DELAY 00:00:05;PRINT 耗時操作完成。; END 方法二&#xff1a;使用忙循環(不推薦&#xff0c;CPU 占用高) CREATE PROCEDURE SimulateBusyLoop AS BEGINDECLARE start DATETIME GETDAT…

Zookeeper的典型應用場景?

大家好&#xff0c;我是鋒哥。今天分享關于【Zookeeper的典型應用場景?】面試題。希望對大家有幫助&#xff1b; Zookeeper的典型應用場景? 超硬核AI學習資料&#xff0c;現在永久免費了&#xff01; Zookeeper 是一個分布式協調服務&#xff0c;廣泛應用于需要高可用性、分…

STM32F103_LL庫+寄存器學習筆記12.3 - 串口DMA高效收發實戰3:支持多實例化的版本

導言 《STM32F103_LL庫寄存器學習筆記12.2 - 串口DMA高效收發實戰2&#xff1a;進一步提高串口接收的效率》基于上一個版本&#xff0c;進一步提升代碼的模塊化水平&#xff0c;支持多實例化。 如上所示&#xff0c;收發大量的數據&#xff0c;沒有丟包。 項目地址&#xff1a…

跨平臺的重構版Notepad++文本編輯器

跨平臺 Notepad 替代方案 Notepad 是 Windows 平臺上的流行文本編輯器&#xff0c;但其原生版本不支持跨平臺。以下是功能相似且支持多平臺的替代工具&#xff1a; Notepadqq&#xff08;Linux/macOS/Windows&#xff09; Notepadqq 是 Notepad 的開源跨平臺版本&#xff0c…

意法STM32F103C8T6 單片機ARM Cortex-M3 國民MCU 電機控制到物聯網專用

STM32F103C8T6 單片機全面解析 1. 產品定位 STM32F103C8T6 是意法半導體&#xff08;ST&#xff09;推出的 經典ARM Cortex-M3內核單片機&#xff0c;采用 LQFP48封裝&#xff0c;以 高性能、豐富外設和超高性價比 成為嵌入式開發領域的"國民MCU"。 2. 核心功能特…

Sui 技術如何助力 Claynosaurz 成功推出 Popkins NFT

像 Claynosaurz 這樣的品牌利用 Sui 推動鏈上創新的邊界&#xff0c;展示了 Web3 如何結合互動娛樂并帶來獨特全新的體驗。Claynosaurz 最近在 Sui 上推出的 Popkins NFT 系列及其大型抽獎活動&#xff0c;不僅在社區參與度上取得了成功&#xff0c;也有力地展示了 Sui 獨特的技…

OpenCV CUDA模塊設備層-----反正弦運算函數asin()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 對一個 uchar 類型的像素值&#xff08;范圍 [0, 255]&#xff09;&#xff0c;先歸一化到浮點范圍 [0.0, 1.0]&#xff0c;然后計算其反正弦值 …

PixiJS 中 HTMLText 富文本渲染問題探究與優化思考?

起因 在使用 PixiJS 進行富文本渲染開發過程中&#xff0c;遭遇 HTMLText 組件處理中文字體加載時出現顯著卡頓現象。針對此問題&#xff0c;在開源社區提交 issue 并附上相關技術細節與運行表現&#xff0c;期望獲得解決方案。 提issues 從 issue 反饋內容來看&#xff0c;項目…

五、Redis的IO模型

簡介 在談及Redis為什么快的時候&#xff0c;很多人都只能回答redis是基于內存&#xff0c;所以快。但他們往往不知道&#xff0c;決定redis快的因素&#xff0c;還有它的IO模型-Reactor模型。談及Redis的IO模型之前&#xff0c;先補充一下IO模型的基礎知識。 IO模型演化 1.堵塞…

Cesium、ThreeWebGL詳解(二)渲染引擎向GPU傳數據、性能優化、引擎對比

下面從 API 定位、坐標體系、性能表現、面試常問點幾個維度詳細對比 Cesium、Three.js 與原生 WebGL 的繪制差異。 &#x1f9ed; 1. API 定位與典型應用 Cesium 聚焦全地球 GIS 場景&#xff0c;支持地形、影像、時空動態等地理信息功能&#xff0c;是專業級地圖應用首選。 T…

單點登錄(SSO)系統

設計一個 Java 單點登錄&#xff08;SSO&#xff09;系統需要解決跨系統認證和會話共享問題。以下是核心設計和實現方案&#xff0c;包含關鍵組件和代碼示例&#xff1a; 一、核心概念 認證中心 (Auth Center)&#xff1a;中央身份驗證服務令牌 (Token)&#xff1a;用戶身份憑…

《信息技術》科技核心期刊推薦

【科研必看】《信息技術》——科技核心期刊&#xff0c;助力你發表高影響力論文&#xff01; 如果你是一位科研工作者、學者或者在校學生&#xff0c;正在為發表論文而努力&#xff0c;那么《信息技術》期刊無疑是你不可錯過的選擇&#xff01;這本期刊以其卓越的學術影響力&am…

界面組件DevExpress WPF中文教程:Grid - 如何遍歷節點?

DevExpress WPF擁有120個控件和庫&#xff0c;將幫助您交付滿足甚至超出企業需求的高性能業務應用程序。通過DevExpress WPF能創建有著強大互動功能的XAML基礎應用程序&#xff0c;這些應用程序專注于當代客戶的需求和構建未來新一代支持觸摸的解決方案。 無論是Office辦公軟件…

2D寫實交互數字人:讓AI形象擁有“真人溫度“的技術革命

在人工智能技術日新月異的今天&#xff0c;數字人已不再是科幻電影中的概念&#xff0c;而是逐步滲透到我們日常生活的各個領域。然而&#xff0c;市場上大多數數字人產品仍停留在"能說會動"的初級階段&#xff0c;缺乏真正的情感交互能力&#xff0c;這種"機械…

2025 年拓客系統排行榜

在數字化營銷時代&#xff0c;拓客系統成為企業獲取客戶資源、提升銷售效率的關鍵工具。以下為您盤點 2025 年表現出色的中文名字拓客系統&#xff0c;其中 微拓客 憑借強大功能脫穎而出&#xff0c;成為眾多從業者的首選。 一、微拓客&#xff1a;精準拓客的全能王者 微拓客堪…

TikTok 矩陣如何快速漲粉

在社交媒體的廣袤天地里&#xff0c;TikTok 以其強大的影響力和龐大的用戶基礎&#xff0c;成為眾多創作者和品牌競相角逐的舞臺。構建 TikTok 矩陣&#xff0c;是擴大影響力、實現快速漲粉的有效策略。那么&#xff0c;究竟如何讓 TikTok 矩陣快速漲粉呢&#xff1f;下面將為您…

基于微信小程序和云開發的企業綠色融資平臺的設計與實現

文章目錄 摘要前言緒論1. 課題背景2. 國內外現狀與趨勢2.1 國內研究現狀2.2 國外研究現狀2.3 發展趨勢3. 課題內容相關技術與方法介紹1. 微信小程序開發技術2. 騰訊云開發平臺3. 綠色項目評估模型4. 智能匹配算法5. 碳核算方法系統分析1. 需求分析1.1 用戶需求1.2 功能需求1.3 …