PHP 在一行中将相同的字符串附加到多个其他字符串?

PHP append same string to multiple other strings in one line?

附加到单个字符串很容易:

$string = "saucy";
$output = " you smell ". $string;
print $output;
// you smell saucy.

PHP 还有一个简单的方法可以一次设置多个值:

$aa = $bb = $cc = [];

但是如果我想将一个字符串同时附加到多个字符串怎么办?

例如:

$aa['horses'] = "trolls!";
$stringSomething = "This is better: ";
$stringElse = "This is less worse : ";

foreach($aa as $bb){
   $stringSomething .= $stringElse .= $bb; // THIS line
}

print $stringSomething;
print $stringElse;

这输出:

This is better: This is less worse : trolls!
This is less worse : trolls!

我很好奇你是否可以得到这样的输出:

This is better: trolls!
This is less worse : trolls!

目前我能看到的是:

foreach($aa as $bb){
   $stringSomething .= $bb;
   $stringElse .= $bb; 
   $stringEntirely .= $bb;
   // .... 

}

有没有一种方法可以将这一切打包成一行,同时将相同的值附加到多个字符串?

注意

这里的问题不是“我如何在数组上执行此操作”,而是询问是否有 shorthand 使用变量执行此操作的方法,如初始变量设置(即 $a = $b = $c = 67;).

方法是将这些字符串放在一个数组中并像这样处理:

<?php

$aa = [];
$aa['horses'] = "trolls!";
$strings = ["This is better: ", "This is less worse : "];

foreach($aa as $bb){
    foreach ($strings as &$string) {
        $string .= $bb;
    }
}

您可以通过传递对它的引用来使用 array_map():

<?php

$suffix = "trolls!";
$string1 = "This is better: ";
$string2 = "This is less worse : ";

array_map(fn(&$s) => $s .= $suffix, [&$string1, &$string2]);

echo "$string1\n";
echo "$string2\n";

您可以通过使用动态变量和包含变量名称的数组来实现:dynamic variables

<?php

$aa = [];
$aa['horses'] = "trolls!";
$name1 = "smth";
$name2 = "smthelse";
$strings = ["name1", "name2"];

foreach($aa as $bb){
    foreach ($strings as $string) {
        $$string .= $bb;
    }
}

目前没有任何特定的语法 shorthand 可以对纯变量执行此操作。

使用 array 值和循环可以通过多种方式完成此操作,但这将涉及向脚本添加代码行并减轻 DRY 原始代码的意图。