2

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

尽管

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

在仅显示文件夹条目方面确实完全符合我的需要,我需要能够根据用户输入过滤数组。

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

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

我希望做类似的事情:

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

我还探索了使用 eval() 的可能性(我知道这可能不是最好的主意,但我已经尝试了我能想到的所有其他方法)来提供变量的内容,但这似乎也不起作用.

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

谢谢。

4

1 回答 1

1

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

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

随着use你声明一个外部变量可以从闭包内部访问 - 你可以说它是“全局的”。

编辑:我从下面包含了最终解决方案。

于 2012-09-07T16:54:55.443 回答