【发布时间】:2013-04-17 14:09:58
【问题描述】:
有没有办法做到这一点:
$myVar = 2;
$str = "I'm number:".$myVar;
$myVar = 3;
echo $str;
输出将是:"I'm number: 3";
我想要一个字符串,它的一部分就像一个指针,它的值将通过对引用变量的最后修改来设置。
例如,即使我这样做:
$myStr = "hi";
$myStrReference = &$myStr;
$dynamicStr = "bye ".$myStrReference;
$myStr = "bye";
echo $dynamicStr;
这将输出“bye hi”,但由于上次更改,我希望它是“bye bye”。我认为问题在于将指针连接到字符串时,指针的值是使用的值。因此,无法使用连接后设置的值输出字符串。
有什么想法吗?
更新:$dynamicStr 将被附加到$biggerString,最后$finalResult ($biggerString+$dynamicStr) 将回显给用户。因此,我唯一的选择是做某种echo eval($finalResult),其中$finalResult 内部有一个echo($dynamicStr) 和$dynamicStr='$myStr'(如Lawson 所建议),对吧?
更新:
$myVar = 2;
$str = function() use (&$myVar) {
return "I'm number $myVar";
};
$finalStr = "hi ".$str();
$myVar = 3;
echo $finalStr;
我希望输出:“嗨,我是 3 号”而不是“嗨,我是 2 号”......但它没有。
【问题讨论】:
-
不能在某个步骤使用变量而不声明它或使用未来值...
-
也许
sprintf会满足您的需求……? php.net/manual/en/function.sprintf.php -
没有。一旦一个变量被“扩展”并且它的值被嵌入到一个字符串中,这个 var 和它被插入的字符串之间的链接就被切断了。如果 var 稍后更改其值,PHP 不会跟踪“原始”字符串并重新执行连接代码。
标签: php string pointers reference