PHP Conference Japan 2024

字符串运算符

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

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

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

添加注释

用户贡献的注释 6 个注释

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,这是未定义的

?>
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);
?>
Stephen Clay
18 年前
<?php
"{$str1}{$str2}{$str3}"; // 一个连接 = 快
$str1. $str2. $str3; // 两个连接 = 慢
?>
使用双引号连接两个以上的字符串,而不是多个 '.' 运算符。PHP 被迫使用每个 '.' 运算符重新连接。
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

?>
biziclop
2 年前
一些按位运算符(与、或、异或和非运算符:& | ^ ~)也适用于字符串(从 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
mariusads::at::helpedia.com
16 年前
小心不要在行尾输入“.”而不是“;”。

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

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

输出为“axbc”,因为第一行上的点。
To Top