使用PHP 5我想知道变量是否可以动态引用该值 多个变量?
例如
<?php
$var = "hello";
$var2 = " earth";
$var3 = $var.$var2 ;
echo $var3; // hello earth
现在,如果我更改$var
或$var2
,我希望$var3
也能更新。
$var2 =" world";
echo $var3;
这仍然打印你好地球,但我想现在打印“你好世界”:(
有没有办法实现这个目标?
答案 0 :(得分:3)
不,在PHP中没有办法用简单的变量做到这一点。如果你想在PHP中做这样的事情,你可能会做的是创建一个包含var1和var2的成员变量的类,然后有一个方法可以为var3提供一个计算值。
答案 1 :(得分:3)
这应该可以解决问题。我在PHP 5.3上测试它并且它工作。也应该适用于任何5.2.x版本。
您可以使用“add”-Method轻松扩展它,以允许在对象中放置任意数量的字符串。
<?php
class MagicString {
private $references = array();
public function __construct(&$var1, &$var2)
{
$this->references[] = &$var1;
$this->references[] = &$var2;
}
public function __toString()
{
$str = '';
foreach ($this->references as $ref) {
$str .= $ref;
}
return $str;
}
}
$var1 = 'Hello ';
$var2 = 'Earth';
$magic = new MagicString($var1, $var2);
echo "$magic\n"; //puts out 'Hello Earth'
$var2 = 'World';
echo "$magic\n"; //puts out 'Hello World'
答案 2 :(得分:2)
没有。如果不使用某种自定义String类就无法完成。 查看types和variables的PHP手册,特别是这段话:
默认情况下,变量始终是 按价值分配。也就是说, 为表达式分配时 变量,整个值 原始表达式被复制到 目的地变量。这意味着,为 例如,在分配一个之后 变量对另一个变量的价值 其中一个变量没有 对另一方的影响。更多 关于这种情况的信息 任务,见章节 Expressions
答案 3 :(得分:1)
有点晚了,但这是一个有趣的问题。 你可以这样做:
$var = "hello";
$var2 = " earth";
$var3 = &$var;
$var4 = &$var2;
echo $var3.$var4; // hello earth
答案 4 :(得分:0)
从我的观点来看,以下代码更接近于所需的代码:
$a = 'a';
$b = 'b';
$c = function() use (&$a, &$b) { return $a.$b; };
echo $c(); // ab
$b = 'c';
echo $c(); // ac
答案 5 :(得分:-1)
创建一个函数。
function foobar($1, $2){
$3 = "$1 $2";
return $3;
}
echo foobar("hello", "earth");
echo foobar("goodbye", "jupiter");