0

我正在玩这个:

$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

4 回答 4

4

PHP 中的变量具有函数作用域。该变量$sort在您的函数中不可用test,因为您还没有将它传入。您还必须将它作为参数传递给函数,或者在函数中定义它。

也可以使用global关键字,但真的不推荐。明确地传递数据。

于 2012-07-29T09:40:58.727 回答
1

您必须将数组作为参数传递!因为函数变量与php中的全局变量不同!

这是固定的:

$sort = array('t1','t2');

function test($e,$sort){
    echo array_search($e,$sort);
}

test('t2',$sort);
于 2012-07-29T09:42:46.723 回答
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);
于 2012-07-29T09:43:03.493 回答
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);
于 2012-07-29T09:46:07.113 回答