in_array()期望参数2是数组

时间:2013-11-13 23:09:25

标签: php arrays return

我有一个多阵列的想法,我的文件被分类到不同的组/数组。 认为这将是检查我们所在文件的最简单,最干净的方式,导航状态是否应在导航选项卡1,2或3上设置为活动状态?

我有这个数组;

Array
(
[home] => Array
    (
        [0] => index.php
        [1] => something.php
    )

[tour] => Array
    (
        [0] => tour.php
    )

[tutorials] => Array
    (
        [0] => tutorials.php
    )
)

我的想法是,如果我点击主页导航按钮,它会转到index.php并且一个函数会检查它是否是需要活动状态的Home按钮,或者是Tour按钮。在这种情况下,它是Home按钮。

[home] => Array
    (
        [0] => index.php

我做了这个功能

function findNavigationActive($tap, $filename) {
    if(in_array($filename, $topNavigationPages[$tap])) {
    return 1;
}
return 0;
}

它应检查,如果index.php($ filename)在Home($ tap)数组或navi-tap中,则返回1.不幸的是我得到了这个错误;

  

警告:in_array()期望参数2为数组,在第21行的/project/../../topNavigationHandler.php中给出为null

我做错了什么?

固定

使用全球$ topNavigationPages;在函数外部,并在下面设置$ topNavigationPages值(数组),并再次使用函数内部的全局$ topNavigationPages将数组拉入内部。 谢谢@tombs!

1 个答案:

答案 0 :(得分:0)

此错误意味着第二个参数不是数组,因此您可以尝试这样的事情。:

if (is_array($topNavigationPages[$tap])) {
    if(in_array($filename, $topNavigationPages[$tap])) {
        return 1;
    }
}
return 0;

您可以在不使用strict和operator嵌套if循环的情况下执行此操作。

希望这有帮助

注意: 要解决范围问题,可以使用全局值或常量。要使用常量,请使用'define'函数,对于全局在文件的开头和您使用它的每个后续函数中声明变量。我强烈建议使用常量。