Использовать массив из функции 1 в функции 2 - PullRequest
0 голосов
/ 25 июля 2011

У меня есть (упрощенная) функция, которая использует in_array(), чтобы проверить, есть ли значение в массиве:

function is($input) {
    $class = array('msie','ie','ie9');
    $is = FALSE;
    if (in_array($input, $class)) {$is = TRUE;}
    return $is;
}

if (is('msie')) 
    echo 'Friends don\'t let friends use IE.';

Я хочу разбить это на две отдельные функции, где сначала определяет массив:

   function myarray() {
        $class = array('msie','ie','ie9');
    }

, а секунда запускает проверку - либо так:

function is($input) {
    myarray();
    $is = FALSE;
    if (in_array($input, $class)) {$is = TRUE;}
    return $is;
}

Или это:

function is($input) {
    global $class;
    $is = FALSE;
    if (in_array($input, $class)) {$is = TRUE;}
    return $is;
}

Но оба вышеперечисленных вызывают эту ошибку:

Warning: in_array() [function.in-array]: Wrong datatype for second argument in /home/vanetten/temp.ryanve.com/PHP/airve.php on line 73

Как правильно использовать массив из одной функции в другой?Может ли массив быть глобальной переменной?Как мне сделать эту работу?Является ли более эффективным использование глобальной переменной или вызов первой функции во второй функции.Любая помощь определенно приветствуется.

Ответы [ 3 ]

5 голосов
/ 25 июля 2011

Возвращает массив из первой функции:

function myarray() {
    return array('msie','ie','ie9');
}

function is($input) {
    $array = myarray();
    return in_array($input, $array);
    // or even just
    // return in_array($input, myarray());
}
1 голос
/ 25 июля 2011

Самый простой способ (который также сводит на нет использование глобальных переменных, что является плохой практикой, поскольку использование $class где-то еще в конце строки может привести к неожиданному поведению) - это что-то вроде

function myarray() {
    return array('msie','ie','ie9');
}

function is($input) {
    $array = myarray();
    $is = FALSE;
    if (in_array($input, $array)) {$is = TRUE;}
    return $is;
}

if (is('msie')) 
    echo 'Friends don\'t let friends use IE.';

В этом примере мы просто заставляем myarray() возвращать необходимый массив. В is() добавьте строку $array = myarray(), которая сохранит массив из myarray(), поэтому его можно использовать из is() в качестве псевдонима $array. Затем просто измените $class на $array, и оно должно работать нормально.

1 голос
/ 25 июля 2011
function is($input) {
  $class = myarray();
  $is = false;
  ...
...