PHP如何一行代码实现向多个字符串变量同时追加相同内容?
结论
PHP原生没有和批量赋值$a = $b = $c = 67完全对等的链式追加语法,原因是拼接赋值运算符.=为右结合规则:你写$stringSomething .= $stringElse .= $bb时,会先执行$stringElse .= $bb,再把拼接后的完整$stringElse的值追加到$stringSomething,这就是你之前输出不符合预期的根本原因。
可行的一行简写方案
你可以通过临时匿名数组+引用遍历的方式实现一行完成多个独立变量的追加操作,不需要把变量长期维护在数组中,完全符合你要求的独立变量使用场景:
foreach([&$stringSomething, &$stringElse, &$stringEntirely] as &$v) $v .= $bb;
注:此处仅临时使用匿名数组完成遍历逻辑,不会改变你原有变量的独立使用属性,不属于要求排除的基于数组的实现方案。
效果验证
替换到你的示例场景中:
$aa['horses'] = "trolls!"; $stringSomething = "This is better: "; $stringElse = "This is less worse : "; foreach($aa as $bb){ foreach([&$stringSomething, &$stringElse] as &$v) $v .= $bb; } print $stringSomething; // 输出:This is better: trolls! print $stringElse; // 输出:This is less worse : trolls!
运行结果和你期望的完全一致。
内容的提问来源于stack exchange,提问作者Mm-Art-In
相关产品推荐
相关产品推荐

