我正在玩这个:
$sort = array('t1','t2');
function test($e){
echo array_search($e,$sort);
}
test('t1');
并收到此错误:
Warning: array_search(): Wrong datatype for second argument on line 4
如果我没有这样的函数调用它,我得到结果0;
echo array_search('t1',$sort);
这里出了什么问题?感谢帮助。
答案 0 :(得分:4)
PHP中的变量具有功能范围。变量$sort
在函数test
中不可用,因为您尚未将其传入。您还必须将其作为参数传递给函数,或者在函数内定义它。
您也可以使用global
关键字,但实际上并不推荐。明确传递数据。
答案 1 :(得分:1)
您必须将数组作为参数传递!因为函数变量与php中的全局变量不同!
这是固定的:
$sort = array('t1','t2');
function test($e,$sort){
echo array_search($e,$sort);
}
test('t2',$sort);
答案 2 :(得分:1)
您无法直接从内部函数访问全局变量。 您有三种选择:
function test($e) {
global $sort;
echo array_search($e, $sort);
}
function test($e) {
echo array_search($e, $GLOBALS['sort']);
}
function test($e, $sort) {
echo array_search($e, $sort);
} // call with test('t1', $sort);
答案 3 :(得分:0)
在函数内部使用$ sort或将$ sort作为参数传递给函数test()..
例如
function test($e){
$sort = array('t1','t2');
echo array_search($e,$sort);
}
test('t1');
----- OR -----
$sort = array('t1','t2');
function test($e,$sort){
echo array_search($e,$sort);
}
test('t1',$sort);