2011-03-02 69 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

相关问题