PHP中的 .= 运算符是什么意思?

54

我有一个变量被定义为

$var .= "value";

使用点等于功能的原理是什么?


1
用于将值附加到已经包含某些值的变量中... - Deadlock
4个回答

80

这是一个字符串连接赋值运算符。其工作方式类似于:

$var = $var . "value";

$x .=$x = $x . 的区别在于前者是原地操作,而后者重新赋值了 $x


1
+1 我也不确定为什么会有负评。这也得到了http://php.net/manual/en/language.operators.string.php的支持。 - Marc Baumbach
@m93a:你能提供文档链接吗? - Blender
3
@Blender 你说得对,它们确实不同。 $x .= 的速度比 $x = $x .~2倍,但规范并没有详细说明这个问题。 - m93a
4
是的,但仅适用于字符串 - 我刚刚浪费了几个小时想弄清楚为什么我的浮点数被转换成了该死的字符串!显然这个该死的运算符会将你该死的浮点数转换成字符串。我现在非常恼火! - Radmation
1
@CamilleGoudeseune 我想你现在已经知道答案了,但为了后人:在你的例子中,$x .= $pi 不会将 $pi 更改为字符串。然而,$pi .= $x 会将 $pi 更改为一个字符串(具体来说是一个等于 $pi .$x 或 "3.14Hi" 的字符串)。 - snoski
显示剩余2条评论

26

这是用于连接的

$var  = "test";
$var .= "value";

echo $var; // this will give you testvalue

19

.” 运算符是字符串连接运算符。".=" 用于连接字符串。

示例:

$var = 1;
$var .= 20;

这与下面的表述相同:

$var = 1 . 20;

".=" 运算符是一个字符串运算符,它首先将值转换为字符串;由于 "." 表示连接 / 追加,结果是字符串 "120"。


-1
以非常简单的语言来说,发生的事情是将存储在每个变量中的任何内容转换为字符串,然后将每个字符串放入一个最终变量中,该变量包括每个变量的每个值放在一起。
我使用这个方法来生成一个随机的字母数字和特殊字符变量。以下是示例:
function generateRandomString($length = 64) {
    $characters = '0123456789-!@#$%^*()?:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $charactersLength = mb_strlen($characters);
    $randomString = '';
    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, $charactersLength - 1)];
    }
    return $randomString;
}

然后要获取$randomString的值,我会像这样将一个变量分配给该函数

$key = generateRandomString();
echo $key;

这段代码的作用是从$characters变量中随机选择一个字符。然后,".="将每个随机选择的结果组合在一起,形成一个新的变量$randomString,其中包含来自$characters字符串组的64个随机选择。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接