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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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 …