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.';