在函数2中使用函数1中的数组

时间:2011-07-24 23:41:23

标签: php arrays function boolean

我有一个(简化的)函数,使用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 个答案:

答案 0 :(得分:5)

从第一个函数返回数组:

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 :(得分:1)

function is($input) {
  $class = myarray();
  $is = false;
  ...

答案 2 :(得分:1)

最简单的方式(这也否定了全局变量的使用,这是一种不好的做法,因为在线下的某个地方使用$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,它就可以正常工作。