前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >3分钟短文 | PHP 连接2个字符串的8个方法,新手常犯错

3分钟短文 | PHP 连接2个字符串的8个方法,新手常犯错

作者头像
程序员小助手
发布2020-07-27 22:15:07
3.7K0
发布2020-07-27 22:15:07
举报
文章被收录于专栏:程序员小助手程序员小助手

引言

今天我们不说数组,说一说字符串的操作。PHP因为历史包袱,工具库内存在了各个时期的各种类型的 array_* 数组操作函数,和 str_* 字符串操作函数。参数位置,返回类型,函数名称等等并不相同。

我们摘取一个小的需求,说一说如何连接两个字符串。

学习时间

原始字符串是这样的:

代码语言:javascript
复制
$data1 = "the color is";
$data2 = "red";

想要获得下面的结果:

代码语言:javascript
复制
$result = "the color is red";

最简单的办法就是使用 PHP 标准的 点 连接符,像下面这样连接两个变量:

代码语言:javascript
复制
$result = $data1 . $data2;

注意到输出记过中间少一个空格,那么就用多个 点 操作符连接起来:

代码语言:javascript
复制
$result = $data1 . ' ' . $data2;

就这么简单,齐活!

够了吗?远远不够。示例永远是最简单的用法,现实会教会我们如何编写健壮的代码。敲黑板,下面的知识,你全部用的上!不要打瞌睡。

既然点操作符是连接字符串的,我们简写起来,少用一些七绕八绕的中间变量,这么写:

代码语言:javascript
复制
$data1 = "the color is ";
$data1 .= "red"

当然了,如果不想使用点操作符连接字符串,嫌他太麻烦,影响程序的连贯性,可读性也不强,我们可以使用下面的方式:

代码语言:javascript
复制
$result = "{$data1} {$data2}";

双引号内的变量,直接解析,拼装为合适的格式就行,完全引用。是不是可读性好了许多?或者你不想使用大括号,明确指定变量名,不加也可以,但是不保证不会出现解析错误:

代码语言:javascript
复制
$result = "$data1 $data2";

这个写法在本节的例子上,也可行得通。

深入思考

我们换个角度想问题,既然是字符串拼接,那么也就是说是字符串的格式化。如果直接使用格式化函数,岂不是更加安全。

事实上,我们处理字符串格式化,大多时候也是这样用的,使用位置参数,指定格式的方式,使程序拥有了更强大的功能,比如订单号的拼接,一些序号的前导加零,后导加零,等等等等。

从C语言,我们就已经拥有了强大的 printf 和 sprintf 函数。PHP里我们也有。代码如下:

代码语言:javascript
复制
$result = sprintf("%s %s", $data1, $data2);

格式化字符串,位置参数绑定,这样的用法健壮而不易出错。

小技巧

PHP内有两个小技巧,在手动造轮子的年代,你一定不少用,那就是文本原样输出所使用的 <<< 操作符。我们试着完成上面的需求:

代码语言:javascript
复制
$result= <<<EOT
$data1 $data2
EOT;

EOT只是一个标识符,指定字符开始的位置,和结束的位置。

还有一个天天用的 echo,你可能不常用到,它可以不定参数传出,并组合输出:

代码语言:javascript
复制
echo $data1, ' ', $data2;

使用逗号分隔符,传入多个参数就行了。

写在最后

本文通过一个极简单的功能示例,连接两个字符串变量,使用了多个方法,从中你可以看到PHP灵活的语法,以及解决问题的方式。经过比较,我们还是推荐使用 sprintf 函数进行数据的格式化。

Happy coding :-)

我是 @程序员小助手 ,持续分享编程知识,欢迎关注。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员小助手 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言
  • 学习时间
  • 深入思考
  • 小技巧
  • 写在最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档