2013-03-07 2 views
1

после отправленной формы я хочу проверить массив, если массив пуст, предупреждает об ошибке для пользователя. но я получаю ошибку, когда занесена форма:php check empty array

PHP

$errors = array_filter($_POST['session']); 
    if (!empty($errors)) { 
     foreach ($_POST['session'] as $value) { 
      $session.=$value.','; 
     } 
     $session=substr($session, 0 , -1); 
    } 

Warning: array_filter() expects parameter 1 to be array, null given in C:\inetpub\wwwroot\manage\test_bank\index.php on line 729 

ответ

3

Вы должны проверить погоду это массив или нет, прежде чем делать какие-либо операции массива.

if(is_array($_POST['session'])){ 
    $errors = array_filter($_POST['session']); 
} 
1

Предупреждение происходит потому, что array_filters() требует массив, чтобы передать ему. Прежде чем перейти $ _POST [ «сессии»] для этой функции, очень если это массив:

if(is_array($_POST['session'])) { 
    $errors = array_filter($_POST['session']); 
    // continue on 
} 
0

is_array для проверки погоды это массив или нет.

echo is_array($_POST['session']); 
0

Это потому, что $ _POST не является массив, который я предполагаю, что вы ищете это:

$errors = array_filter($_POST);

0

Ниже будет проще всего проверить наличие пустых ошибок или не

!empty($_POST['session']) 

Будет работать, если вы не заполняете пустые записи в $ _POST ['session'] без ошибок. Зачем вам нужен array_filter?

0

Измените его на array_filter($_POST), потому что $ _POST - это ассоциативный массив, или проверьте, является ли $_POST['session'] массивом, используя эту строку is_array($_POST['session']) перед array_filter(). Сначала вы должны проверить, является ли переменная, с которой вы работаете, массив перед использованием функций массива.

0

$ _POST - это массив, но здесь $ _POST ['session'] нет.

Вы можете smply попробовать это:

if(isset($_POST['session'])) 
{ 
    //do your stuff 
}