使用PHP 5时,我想知道一个变量是否可以动态引用多个变量的值?
例如
<?php
$var = "hello";
$var2 = " earth";
$var3 = $var.$var2 ;
echo $var3; // hello earth现在,如果我更改了$var或$var2,我希望$var3也能更新。
$var2 =" world";
echo $var3; 这仍然打印hello earth,但我现在想打印"hello world“:(
有什么方法可以做到这一点吗?
发布于 2009-12-20 12:25:51
不,在PHP中没有办法用简单的变量来做到这一点。如果您想在PHP中做类似的事情,您可能要做的是创建一个包含var1和var2成员变量的类,然后使用一个方法为您提供var3的计算值。
发布于 2009-12-20 18:10:02
这应该能起到作用。我在PHP5.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'发布于 2009-12-20 17:47:40
不是的。如果不使用某种自定义字符串类,就不能这样做。查看types和variables的PHP手册,特别是这一段:
默认情况下,变量始终按值赋值。也就是说,当您将表达式赋给变量时,原始表达式的整个值将被复制到目标变量中。这意味着,例如,将一个变量的值赋给另一个变量后,更改其中一个变量将不会对另一个变量产生影响。有关此类赋值的更多信息,请参阅关于Expressions的章节。
https://stackoverflow.com/questions/1934830
复制相似问题