2012-07-29 4 views
0

Я играю с этим:array_search неправильный аргумент типа данных

$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

0; нормально, обратите внимание, что $ sort [0] = 't1'; – mrok

ответ

4

Переменные на PHP имеют функция область. Переменная $sort недоступна в вашей функции test, потому что вы ее не передали. Вам также нужно передать ее в функцию как параметр или определить ее внутри функции.

Вы также можете использовать ключевое слово global, но это действительно не рекомендуется. Пропускайте данные.

+0

Хорошо, я думаю, это просто проглотило меня сегодня. Спасибо за помощь. Я понял. – bingjie2680

1

Вы должны передать массив в качестве параметра! Поскольку переменные функций отличаются от глобальных переменных в php!

Вот неподвижная один:

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

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

test('t2',$sort); 
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); 
0

берут на $ то внутри функции или передать $ рода в качестве параметра функционировать тест() ..

Для например,

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); 
Смежные вопросы