如何在复选框组上使用filter_input



我有一组复选框,我有麻烦看到我如何使用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 -数组翻转

相关内容

  • 没有找到相关文章

最新更新