2016-10-06 47 views
0

我正在開發一個基於PHP的Web應用程序。 PHP運行的版本是5.2.x!我在程序中有一個函數play,在play之外定義了一個名爲$study的數組,其中包含一些元素。在PHP版本中使用「use」<5.3

function play($games, $time) { 
//Do something here 
$lol = array_search(strtolower($games), array_map('strtolower', $study['somevar'])); 
} 

現在,這裏的問題是我在其他地方調用play()在我的代碼,但你可以看到我引用$study['somevar']但功能只需要兩個參數:$games & $time所以沒有辦法參考$研究[」 somevar'。我知道有時在PHP這也適用

function play($games, $time) use ($study){ 
    //do something 
} 

但是當我嘗試比它給了錯誤的PHP 5.2使用此use語法運行。那麼,我該如何做到這一點呢?有任何想法嗎?

編輯1:

所以,這就是$研究陣列打印出來(我試過外功能)

echo $study['somevar'] : It prints out Array (English word "Array") 
echo $study['somevar'][0] : It prints out blahblah (0th element) 
echo $study['somevar'][1] : It prints out OKoK (1st element) 

簡單地說,使用的var_dump($研究)我有

["somevar"]=> 
    array(2) { 
    [0]=> 
    string(8) "blahblah" 
    [1]=> 
    string(4) "OKoK" 

有一個在學習上沒有第二個元素 - > somevar。所以,只有兩個(0級和1)

現在,基本上我想用這個數組在搜索功能play中使用$遊戲。所以,爲了這個功能,如可以在僞代碼見上文我已經使用

array_search(strtolower($games), a second element)

現在內部array_search該第二元件,我希望所有的數組$研究的元件(即blahblah,奧科克)要被轉換爲小寫,所以我可以很容易地使用array_search方法進行匹配。因此,我使用的邏輯,以array_map('strtolower', $study['somevar']) ..

,並放置成array_search方法等:

$lol = array_search(strtolower($games), array_map('strtolower', $study['somevar']));

現在,在進一步的代碼我通過一些值在功能play('OkOk', 10);並且在此所述OKOK應該匹配進入我們的硬編碼$ study數組中,因爲元素1包含該鍵。這是邏輯。但我得到像

array_map() Argument #2 should be an array in .......... 
array_search() [<a href='function.array-search'>function.array-search</a>]: Wrong datatype for second argument in ......... 
+0

還是錯誤@RyanVincent'array_map():參數#2應該是&array_search()中的數組: ' –

+0

@RyanVincent當在函數外部打印study ['somevar'] [0]時,它會給出好的輸出結果。 –

+0

@RyanVincent兄弟,我已經完整地更新了問題。請重新看 –

回答

0

錯誤,因爲它是在PHP 5.3引入了不能在PHP 5.2使用use但你可以使用global

function play($games, $time) { 
    global $study; 
    //Do something here 
    $lol = array_search(strtolower($games), array_map('strtolower', $study['somevar'])); 
} 
+0

無法正常工作..我用更多的細節外觀更新了問題 –