2009-12-20 50 views
3

使用PHP 5我想知道一個變量是否可以動態引用多個變量的值 ?有沒有辦法綁定變量? PHP 5

例如

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

現在,如果我改變任何$var$var2我想$var3進行過更新。

$var2 =" world"; 
    echo $var3; 

這仍然打印Hello大地,但我想打印的「Hello World」現在:(

有什麼辦法來實現這一目標?

+0

這可以用任何語言來完成?我只看到它在flex中,但只綁定到UI的數據。 – Kevin

回答

3

沒有,有沒有辦法做到如果你想在PHP中做這樣的事情,你可能會做的是創建一個具有var1和var2成員變量的類,然後有一個方法可以給你一個計算值var3

-1

創建函數

function foobar($1, $2){ 
$3 = "$1 $2"; 
return $3; 
} 

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

我想你錯過了這一點。 –

2

不可以不使用某種自定義String類來完成。 檢查PHP手冊typesvariables,尤其是這樣一段話:

默認情況下,變量始終 值賦值。也就是說,當您將表達式分配給 變量時, 原始表達式的整個值被複制到 目標變量中,即 。這意味着,對於 實例,在將一個 變量的值分配給另一個變量值後,更改 其中一個變量對另一個變量沒有 影響。有關此種 分配的更多 信息,請參閱 Expressions一章。

3

這應該可以做到。我在PHP 5.3上測試過它,它工作。還應該在任何5.2.x版本上工作。

您可以使用「添加」方法輕鬆擴展此方法 - 允許將任意數量的字符串放置在對象中。

<?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' 
+0

既邪惡又整齊。 –

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 
相關問題