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

Php 在函数2中使用函数1中的数组,php,arrays,function,boolean,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.'; 我想将其

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

从一个函数到另一个函数使用数组的正确方法是什么?数组可以是全局变量吗?我该怎么做?使用全局变量还是在第二个函数中调用第一个函数更有效。非常感谢您的帮助。

从第一个函数返回数组:

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());
}
最简单的方法(这也否定了全局变量的使用,这是一种糟糕的做法,因为在其他地方使用
$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
,它就可以正常工作。

myarray()
是一个单行函数,为什么要将其隔离,而不只是保持其内联呢?我只是在这里简化了myarray()。实际的函数定义要长得多(它没有输出字符串)。是的,如果我要使用全局变量,那么我必须对它进行更独特的重命名。从性能的角度来看,使用全局函数会比用函数调用函数更好吗,还是没有什么区别?我希望能够在一个页面上多次使用is()(类似于WordPress的条件标记)。@ryanve从查看您的代码来看,多次调用它可能会带来轻微的性能开销,主要是由于大量的
preg
函数。您可以始终在全局范围(即页面顶部)中指定一个变量,例如设置为
myarray()
,然后在需要时通过
is($\u类)
将该值传递到
is()
。这将减少多次调用
myarray()
的开销,但也有助于缓解由于使用纯全局变量而产生的问题。我刚刚用两种方法测试了它,运行了100次函数。这是毫秒,但这两种方法之间肯定有区别。请看这里:[链接]我正计划发布/开放所有airve_uu功能(作为一个小型框架)。谢谢你的帮助!
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.';