我有一组复选框,我有麻烦看到我如何使用filter_input检索它们的值。
我的数据看起来像这样(来自print_r($_GET)
):
Array (
[Keywords] => Array (
[0] => Dairy
)
[Diet] => Array (
[0] => Diabetes Appropriate
[1] => Healthy Weight
)
[Regional] => Array (
[0] => Greek
[1] => Mediterranean
)
)
这段代码. .
// the specific categories I want to retrieve
$cat_names = array(
"Regional",
"Diet",
"Keywords"
);
// filter new category data
$cats = array();
foreach( $cat_names as $c ){
$cats[ $c ] = filter_input(INPUT_GET, $c);
}
. .生产:
array(4) (
[Regional] => (bool) false
[Diet] => (bool) false
[Keywords] => (bool) false
)
. .但我希望这样:
array(4) (
[Regional] => array(2) ('Greek', 'Mediterranean')
[Diet] => array(2) ( 'Diabetes Appropriate', 'Healthy Weight')
[Keywords] => array(1) ('Dairy')
)
我已经有一段时间没有在php框架外工作了-我该怎么做呢?
我正在寻找一个类似问题的解决方案,当我发现你的帖子时,我确实想到了这个解决方案…
你可以在你的filter_input函数中添加这些过滤器:
$cats[$c] = filter_input(INPUT_GET, $c, FILTER_DEFAULT, FILTER_REQUIRE_ARRAY);
除了FILTER_DEFAULT,你可以按照你想要的方式进行清理。
然而,如果你有一个简单的关联some_category => some_value
,它不是一个数组,你最终会得到一个空的$cats['some_category']
例如,如果$_GET包含如下内容:
Array (
[Regional] => Array (
[0] => Greek
[1] => Mediterranean
)
[some_category] => 'some value'
)
所以这是在array_flip()
的帮助下使用array_intersect_key()
的简单案例。
$cats = array_intersect_key( $_GET, array_flip($cat_names) );
的结果应该是你正在寻找的。
PHP -数组交叉键- PHP -数组翻转