簡體   English   中英

在PHP版本5.3中使用“使用”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM