PHP:在字符串中计算变量,然后更改变量的值

PHP:在字符串中计算变量,然后更改变量的值,php,Php,我有一个字符串,如下所示: $s1 = "Apples"; $s2 = "$s1 are great"; echo $s2; 我对PHP的理解是,第二行中的双引号将导致在字符串中计算$s1,并且输出将是 Apples are great 但是,如果我想保留$s2作为“模板”,在其中更改$s1的值,然后重新计算它以获得新字符串,该怎么办?这样的事情可能吗?例如: $s1 = "Apples"; $s2 = "$s1 are great"; echo $s2 . "\n"; $s1 = "Ba

我有一个字符串,如下所示:

$s1 = "Apples";
$s2 = "$s1 are great";
echo $s2;
我对PHP的理解是,第二行中的双引号将导致在字符串中计算$s1,并且输出将是

Apples are great
但是,如果我想保留$s2作为“模板”,在其中更改$s1的值,然后重新计算它以获得新字符串,该怎么办?这样的事情可能吗?例如:

$s1 = "Apples";
$s2 = "$s1 are great";
echo $s2 . "\n";

$s1 = "Bananas";
$s3 = "$s2";
echo $s3 . "\n";
我发现以下各项的输出为:

Apples are great 
Apples are great
我希望得到的更像是:

Apples are great 
Bananas are great

在PHP中,我可以保持“模板”字符串不变,更改输入变量,然后重新计算为一个新字符串,这是可能的吗?或者这在PHP中是不可能的?

好吧,您可以这样做:(只是一个快速的mashup)


好吧,你可以这样做:(只是一个快速的混搭)

您可以尝试使用以获得类似的结果: (仅高于PHP 5.3!)

您可以尝试使用以获得类似的结果: (仅高于PHP 5.3!)


您还可以使用引用传递(尽管在需要修改原始引用的函数中更常用):


您还可以使用引用传递(尽管在需要修改原始引用的函数中更常用):


不确定您是否会对此感到满意,但您可以使用
sprintf(“%s是伟大的”,“苹果”)使用函数是可取的。不确定您是否会对此感到满意,但您可以使用
sprintf(“%s很好”,“Apples”)建议使用函数。
$template = "{key} are great";
$s1 = "Apples";
$s2 = "Bananas";

echo str_replace('{key}',$s1,$template) . "\n";
echo str_replace('{key}',$s2,$template) . "\n";
$s1 = function($a) { 
    return $a . ' are great';
};

echo $s1('Apples');
echo $s1('Bananas');
<?php

$s4 = " are great";
$s1 = "Apples";
$s2 = &$s1;

echo $s2.$s4;

$s1 = "Bananas";
$s3 = $s2;
echo $s3.$s4;

?>
Apples are great
Bananas are great