PHP动态字符串更新引用

标签 php string pointers reference

有什么办法可以做到这一点:

$myVar = 2;
$str = "I'm number:".$myVar;
$myVar = 3;

echo $str;

输出为:“我的号码: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 号”……但事实并非如此。

最佳答案

这里的问题是,一旦为变量分配了值(在您的情况下为字符串),其值就不会更改,直到再次修改为止。

您可以使用匿名函数来完成类似的事情:

$myVar = 2;
$str = function() use (&$myVar) {
    return "I'm number $myVar";
};

echo $str(); // I'm number 2
$myVar = 3;
echo $str(); // I'm number 3

当函数被分配给 $str 时,它会保持变量 $myVar 从内部可访问。在任何时间点调用它都将使用 $myVar 的最新值。

更新

关于你的最后一个问题,如果你想进一步扩展字符串,你可以创建另一个包装器:

$myVar = 2;
$str = function() use (&$myVar) {
    return "I'm number $myVar";
};

$finalStr = function($str) {
    return "hi " . $str();
}

$myVar = 3;

echo $finalStr($str);

关于PHP动态字符串更新引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16062349/

相关文章:

php - 基于用户选项的 PHP 动态 SQL SELECT 语句

php - 将 HTML 实体放入 MySQL 数据库时对其进行解码

c - ANSI C 中的字符串处理(内存分配)

c - 不兼容的指针类型将 'char*' 传递给类型为 'FILE*' 的参数(又名 'struct__sFILE*' )

c - scanf() 中的 <数组名称> + <常量> 是什么?

php - 通过在末尾添加 '@live.com' 来更新电子邮件地址

php - 插入或删除时,与 PDO 的 DB2 连接抛出一般错误 -7008

ruby-on-rails - 如何使 Ruby 字符串对文件系统安全?

python - 如何搜索字符串并提取所有特定字符?

c - 使用 malloc 函数的指向数据不断消失在它之外