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

関数内からグローバル変数に直接アクセスすることはできません。次の 3 つのオプションがあります。

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 を取得するか、関数 test() のパラメーターとして $sort を渡します。

例えば

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 に答える