我在这里找到了一个关于如何过滤多维数组的优秀教程: 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()的可能性(我知道它可能不是最好的主意,但我已经尝试了其他所有我能想到的)来提供变量的内容,但这似乎不是工作要么。
这里的任何建议都会很棒。
感谢。
答案 0 :(得分:1)
这可能是因为闭包内的变量范围。尝试以下内容:
$filtered = array_filter($array,
function($v) use ($userinput) {
return in_array($v['type'], $_POST['userSelections']);
}
);
使用use
,你可以从闭包内部声明一个外部变量 - 你可以说它是“全局的”。
编辑:我从下面列出了最终解决方案。