繁体   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