2011-03-02 70 views
3

我希望能夠調用一個函數,它將在調用函數中設置一個或多個局部變量。例如:在調用函數中創建局部變量,從一個字符串

function someFunc() { 
loadTranslatedStrings($LOCALS, "spanish"); 
echo $hello; // prints "hola"; 
} 

function loadTranslatedStrings (&$callerLocals, $lang) { 
if ($lang == 'spanish') 
    $callerLocals['hello'] = 'hola'; 
else if ($lang == 'french') 
    $callerLocals['hello'] = 'bonjour'; 
else 
    $callerLocals['hello'] = 'hello'; 
} 

(我猜這是不可能做到這一點,但還不如問...)

回答

5

你可以這樣做......

function someFunc() { 
    loadTranslatedStrings($lang, "spanish"); 
    extract($lang); 
    echo $hello; // prints "hola"; 
} 

CodePad

+0

真棒,謝謝。當它讓我接受答案時,我會在你和蒂姆之間翻轉一筆錢。 :) – rob 2011-03-02 00:49:43

+0

(你贏了... :)) – rob 2011-03-02 00:58:16

+0

@rob謝謝 - 我認爲蒂姆應得的讚揚:) – alex 2011-03-02 01:00:43

4

我認爲你可以得到的最接近的是使用extract

function someFunc() 
{ 
    extract(loadStrings('french')); 
    echo $hello; 
} 

function loadStrings($lang) 
{ 
    switch($lang) 
    { 
     case 'spanish': 
     return array('hello' => 'hola'); 
     case 'french': 
     return array('hello' => 'bonjour'); 
    } 
} 
+1

2秒! +1和我一樣的想法:) – alex 2011-03-02 00:46:35

+0

完美,謝謝! – rob 2011-03-02 00:48:20

0

你可以做,使用$GLOBALS$GLOBALS['hello'] = 'hola';

+0

這不會是本地的功能。 – alex 2011-03-02 00:46:53

+0

然後只提取''會做,因爲它已經提到。 – vissi 2011-03-02 00:48:18

相關問題