有没有一种方法可以绑定变量?PHP 5

4

我希望使用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” :(

有没有什么方法可以实现这个需求呢?


这个可以用任何编程语言实现吗?我只在Flex中看到过,但只是将数据绑定到UI。 - Kevin
6个回答

3
这应该可以解决问题。我在PHP 5.3上测试过,它有效。也应该适用于任何5.2.x版本。
您可以轻松使用“add”方法扩展此功能,以允许将任意数量的字符串放置在对象中。
<?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'

同时既邪恶又整洁。 - Zac Bowling

3

不,使用简单变量在PHP中无法实现此操作。如果您想在PHP中执行类似操作,您可能需要创建一个具有var1和var2成员变量的类,然后编写一个方法为您提供var3的计算值。


2
不能在不使用自定义字符串类的情况下完成。请查看PHP手册中有关类型变量的内容,特别是以下段落:

默认情况下,变量总是按值分配。也就是说,当您将表达式赋值给变量时,整个原始表达式的值都会被复制到目标变量中。这意味着,例如,在将一个变量的值分配给另一个变量之后,更改其中一个变量将不会影响另一个变量。有关此类赋值的更多信息,请参见表达式章节。


1

有点晚了,但这是一个有趣的问题。 你可以这样做:

$var = "hello";
$var2 = " earth";
$var3 = &$var;
$var4 = &$var2;
echo $var3.$var4; // hello earth

0
依据我的看法,以下代码更接近所需:
$a = 'a';
$b = 'b';
$c = function() use (&$a, &$b) { return $a.$b; };
echo $c(); // ab
$b = 'c';
echo $c(); // ac

-1
创建一个函数。
function foobar($1, $2){
$3 = "$1 $2";
return $3;
}

echo foobar("hello", "earth");
echo foobar("goodbye", "jupiter");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接