我有一组复选框,我很难看到如何使用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工作 - 我该怎么做?
答案 0 :(得分:4)
当我找到你的帖子时,我正在寻找解决类似问题的解决方案,我确实提出了这个解决方案......
您可以在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'
)
答案 1 :(得分:0)
所以这是在array_intersect_key()
的帮助下使用array_flip()
的简单案例。
$cats = array_intersect_key( $_GET, array_flip($cat_names) );
的结果应该是您正在寻找的。 p>