PHP:如何连接对字符串变量的引用?

在下面的PHP片段中,
$phrases
需要反映
$greeting
中的变化。怎么能实现这一目标?
$greeting = "Hello!";

$phrases = array('greeting' => $greeting . " Glad to see you.");
echo $phrases['greeting'];
Hello! Glad to see you.
$greeting = "How are you?";
echo $phrases['greeting'];
Hello! Glad to see you.
注意,即使在
$greeting
变量的值改变之后,数组也保持不变(这通常是预期的行为,因为
$greeting
var的值通过值传递)。 为了使数组做更改,我尝试使用对变量的引用,但它们似乎不适用于连接运算符
.
。 感谢是否有人可以建议快速解决这个问题..     
已邀请:
您正在尝试创建一个动态字符串变量,这在php中是不可能的。 你需要使用一个功能。 一个可能最接近您的代码的方法是存储为带引用的数组并使用implode:
$greeting = "Hello!";

$phrases = array(&$greeting," Glad to see you.");
echo implode($phrases);

$greeting = "Hi!";
echo implode($phrases);
编辑:删除了其他两种可能的方法     
将占位符添加到字符串的最常用方法是printf()
$phrases = array('greeting' => "%s Glad to see you.");

$greeting = "Hello!";
printf($phrases['greeting'],$greeting);
$greeting = "How are you?";
printf($phrases['greeting'],$greeting);
    
轻松,使用&amp ;. 例:
$a = 'a';
$b = array(&$a);
$a = 'b';
print_r($b);
打印:   数组([0] => b) 编辑:连接字符串时不能使用& -symbol。您应该重新定义整个变量或使用printf或其他东西(但我建议您重新定义整个变量。)     
因此,每当您更改
$greeting
的值时,您希望
$pharses
数组中的值发生变化吗?这是不可能的,因为当您创建字符串时,会创建一个“字符串对象”,即对内存中某个部分的引用,其中的值是硬编码的,永远不会更改。 你必须写一个函数,比如
function getPhrase(which) {
   // do concatenation using $greeting
}
每当你想输出一个短语时,你必须调用它。     
几年后.. 你可以用同样的方法来解决:
$greeting = "Hello!";

$phrases = array('greeting' => function() use (&$greeting) {
                return $greeting." Glad to see you.";
            });

echo call_user_func($phrases['greeting']);

$greeting = "Oh NOOO!";
echo call_user_func($phrases['greeting']);
    

要回复问题请先登录注册