2014-10-06 1 views
0

У меня есть переменная набор одинаковых полей ввода в моей форме, где некоторые могут быть пустыми.использование filter_input_array и array_filter в том же массиве

<input type="text" class="form-control" name="option[]" placeholder="fill in" /> 
<input type="text" class="form-control" name="option[]" placeholder="optional" /> 
<input type="text" class="form-control" name="option[]" placeholder="optional" /> 

значения этих полей ввода приходят в массив $_POST["option"]

Я хочу, чтобы фильтровать $_POST["option"] и для этого я использую следующий код:

$filter = array("option" => array("filter"=>FILTER_CALLBACK,"flags"=>FILTER_FORCE_ARRAY,"options"=>"ucwords")); 
$optionfin = filter_input_array(INPUT_POST, $filter); 

Но теперь я хочу также используйте функцию array_filter, чтобы удалить пустые поля, чтобы я мог вставлять только заполненные поля в мою базу данных, но это, похоже, не работает.

$option = array_filter($optionfin); 

, когда я делаю следующее:

$optionfin = array_filter($_POST["option"]); 

это работает нормально, но я знаю, что ты лучше не обращаться к $_POST таким образом, потому что это не то, что безопасно ...

Может ли кто-нибудь помочь мне указать, где я иду не так?

Благодаря

+0

'$ newvar = $ _POST [ 'вариант'];' и затем сделать '$ optionfin = array_filter ($ newvar); ' – Svenskunganka

+0

Таким образом, это работает, я знаю, я уже сказал, что в моем первоначальном вопросе здесь. Но я хочу фильтровать строки и целые числа. Поэтому я хотел бы использовать 'filter_input_array' для этого! – Peter

ответ

0

Поскольку вы используете filter_input_array, вы на самом деле в конечном итоге с ассоциативным массивом, который соответствует $_POST. Таким образом, чтобы отфильтровать пустые поля, как вы пытаетесь сделать, вам нужно будет указать option ключ:

$option = array_filter($optionfin['option']); 
+0

Спасибо, что сделал трюк! Мне стыдно за то, что я сам этого не делал! – Peter

Смежные вопросы