0

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

$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 来说是不可能的吗?

4

3 回答 3

2

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

$template = "{key} are great";
$s1 = "Apples";
$s2 = "Bananas";

echo str_replace('{key}',$s1,$template) . "\n";
echo str_replace('{key}',$s2,$template) . "\n";
于 2012-06-27T07:35:49.630 回答
1

您可以尝试使用匿名函数(闭包)来获得类似的结果:(仅限 PHP 5.3 以上!)

$s1 = function($a) { 
    return $a . ' are great';
};

echo $s1('Apples');
echo $s1('Bananas');
于 2012-06-27T07:47:35.927 回答
0

您还可以使用引用传递(尽管当您希望修改原始内容时,它更常用于函数中):

<?php

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

echo $s2.$s4;

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

?>

输出:

Apples are great
Bananas are great 
于 2012-06-27T07:59:34.777 回答