[英]Using “use” in PHP version < 5.3
我正在開發一個基於PHP的Web應用程序。 運行的PHP版本是5.2.x! 我有一個功能play
的程序,以及一個數組稱為$study
,外部定義play
,包含幾個要素。
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:
因此,這就是$ study數組的輸出(我在外部函數中嘗試過)
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($ study)我得到了
["somevar"]=>
array(2) {
[0]=>
string(8) "blahblah"
[1]=>
string(4) "OKoK"
研究中沒有第二元素-> somevar ..因此,只有兩個元素(0和1)
現在,基本上,我想使用此數組在函數play
與$ games一起搜索它。 因此,對於函數內部的那個; 如您在上面用偽代碼所見
array_search(strtolower($games), a second element)
現在,array_search中的第二個元素,我希望將數組$ study的所有元素(即blahblah,OKoK)都轉換為小寫,以便可以使用array_search
方法輕松進行匹配。 因此,我使用了對array_map('strtolower', $study['somevar'])
的邏輯。
並將其放入array_search
方法中,例如:
$lol = array_search(strtolower($games), array_map('strtolower', $study['somevar']));
現在,在進一步的代碼中,我在函數play('OkOk', 10);
傳遞了一些值play('OkOk', 10);
並且OKOK應該匹配到我們的硬編碼$ study數組中,因為元素1包含該key。 這是邏輯。 但是我得到像
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 .........
您不能在PHP 5.2中使用use
,因為它是PHP 5.3中引入的,但是您可以使用global
:
function play( $games, $time ) {
global $study;
//Do something here
$lol = array_search(strtolower($games), array_map('strtolower', $study['somevar']));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.