array_search错误的参数数据类型

时间:2012-07-29 09:37:51

标签: php arrays

我正在玩这个:

$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);

这里出了什么问题?感谢帮助。

4 个答案:

答案 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);