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 原始代码的意图。
附加到单个字符串很容易:
$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 原始代码的意图。