字符串运算符

有两个 字符串 运算符。第一个是连接运算符('.'),它返回其左右参数的连接。第二个是连接赋值运算符('.='),它将右侧的参数附加到左侧的参数。有关更多信息,请阅读 赋值运算符

<?php
$a
= "Hello ";
$b = $a . "World!"; // 现在 $b 包含 "Hello World!"

$a = "Hello ";
$a .= "World!"; // 现在 $a 包含 "Hello World!"
?>

添加注释

用户贡献的注释 6 个注释

262
K.Alex
11 年前
对我来说,花括号是连接的很好替代,它们打起来更快,代码看起来更简洁。请记住使用双引号(" "),因为它们的内容会被 php 解析,因为在单引号(' ')中,您将得到提供的变量的字面名称

<?php

$a
= '12345';

// 这有效:
echo "qwe{$a}rty"; // qwe12345rty,使用花括号
echo "qwe" . $a . "rty"; // qwe12345rty,使用连接

// 无效:
echo 'qwe{$a}rty'; // qwe{$a}rty,单引号不被解析
echo "qwe$arty"; // qwe,因为 $a 变成 $arty,这是未定义的

?>
168
anders dot benke at telia dot com
20 年前
注意 - 点运算符与 + 和 - 具有相同的优先级,这可能会产生意想不到的结果。

示例

<php
$var = 3;

echo "Result: " . $var + 3;
?>

上面的代码将打印 "3" 而不是 "Result: 6",因为首先创建字符串 "Result3",然后将其加到 3,得到 3,非空非数字字符串被转换为 0。

要打印 "Result: 6",请使用括号更改优先级

<php
$var = 3;

echo "Result: " . ($var + 3);
?>
109
Stephen Clay
18 年前
<?php
"{$str1}{$str2}{$str3}"; // 一个连接 = 快
$str1. $str2. $str3; // 两个连接 = 慢
?>
使用双引号连接两个以上字符串,而不是多个 '.' 运算符。PHP 被迫在每个 '.' 运算符处重新连接。
89
hexidecimalgadget at hotmail dot com
15 年前
如果尝试使用连接运算符添加数字,结果将是这些数字作为字符串的结果。

<?php

echo "thr"."ee"; // 打印字符串 "three"
echo "twe" . "lve"; // 打印字符串 "twelve"
echo 1 . 2; // 打印字符串 "12"
echo 1.2; // 打印数字 1.2
echo 1+2; // 打印数字 3

?>
7
biziclop
1 年前
一些位运算符(与、或、异或和非运算符:& | ^ ~)也可以在 PHP4 中与字符串一起使用,因此您不必循环遍历字符串并执行 chr(ord($s[i])) 之类的事情。

请参阅位运算符的文档:https://php.net/operators.bitwise

<?php var_dump(
(
'23456787654' ^ 'zVXYYhoXDYP'), // 'Hello_World'
('(!($)^!)@$@' | '@ddhfIvn2H$'), // 'hello_world'
('{}~|o!Wo{|}' & 'Lgmno|Wovmf'), // 'Hello World'
(~'<0-14)(98' & '}}}}}}}}}') // 'AMPLITUDE'
); ?>

实时演示:https://3v4l.org/MnFeb
39
mariusads::at::helpedia.com
15 年前
请小心,不要在行尾输入 "." 而不是 ";"。

由于类似这样的问题,我花了 30 多分钟才调试出一个很长的脚本

<?
echo 'a'.
$c = 'x';
echo 'b';
echo 'c';
?>

输出为 "axbc",因为第一行中的点。
To Top