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