根据用户输入过滤多维数组

时间:2012-09-07 16:52:36

标签: php

我在这里找到了一个关于如何过滤多维数组的优秀教程: PHP filter 2 dimensional array by specific key

虽然

$filtered = array_filter(
    $array, 
    function($v) { 
        return $v['type'] == 'folder'; 
    }
); 

确实完成了我只需要显示文件夹条目的功能,我需要能够根据用户输入过滤数组。

因此,从我上面提到的页面上使用的示例中,将有一个文件夹和页面的复选框,然后根据用户选择的内容(页面,文件夹或两者),将显示它们的选择。 / p>

我遇到的问题是我似乎无法使用变量存储$ v ['type'] =='文件夹'。

我希望做类似的事情:

$filtered = array_filter($array, function($v) { return $userSelections; });

我还探讨了使用eval()的可能性(我知道它可能不是最好的主意,但我已经尝试了其他所有我能想到的)来提供变量的内容,但这似乎不是工作要么。

这里的任何建议都会很棒。

感谢。

1 个答案:

答案 0 :(得分:1)

这可能是因为闭包内的变量范围。尝试以下内容:

$filtered = array_filter($array, 
    function($v) use ($userinput) { 
        return in_array($v['type'], $_POST['userSelections']); 
    }
);

使用use,你可以从闭包内部声明一个外部变量 - 你可以说它是“全局的”。

编辑:我从下面列出了最终解决方案。