有没有办法绑定变量? PHP 5

时间:2009-12-20 04:20:20

标签: php

使用PHP 5我想知道变量是否可以动态引用该值 多个变量?

例如

    <?php
    $var = "hello";
    $var2 = " earth";
    $var3 = $var.$var2 ;
    echo $var3; // hello earth

现在,如果我更改$var$var2,我希望$var3也能更新。

    $var2 =" world";  
    echo $var3; 

这仍然打印你好地球,但我想现在打印“你好世界”:(

有没有办法实现这个目标?

6 个答案:

答案 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类就无法完成。 查看typesvariables的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");
相关问题