2010-02-04 3 views
3

Я хочу показать ошибку, когда переменная имеет значение BLANK или EMPTY или NULL. например переменная показано ниже:php: Как проверить поле пустым/пустым/значением NULL?

$mo = strtotime($_POST['MondayOpen']); 

и
var_dump($_POST['MondayOpen']) возвращается string(0) "".

Теперь я иду с ниже подход

  1. Сначала хочу найти какой тип переменной $mo есть (строка? или целое или иное)

  2. Какую функцию лучше всего найти, что $mo не имеет значения.

я провести тест с $mo и получил следующие результаты

is_int($mo);//--Return nothing 
is_string($mo); //--Return bool(false) 
var_dump($mo); //--Return bool(true)     
var_dump(empty($mo));//--Return bool(true) 
var_dump($mo==NULL);//--Return bool(true) 
var_dump($mo=='');//--Return nothing 

Просьба предложить оптимальный и правильный подход, чтобы проверить переменная целостность

+1

В качестве побочного примечания вы используете '==', который проверяет равенство, например '1 == '1'', который будет оцениваться как' true'. Но когда вы используете '===', он проверяет, равны ли типы. В моем примере '1 === '1'' вернет false, так как' int' не является 'String'. –

ответ

3

делать StrToTime возвратит ложь, если она не может преобразовать в штамп времени.

$mo = strtotime($_POST['MondayOpen']); 
if ($mo !== false) 
{ 
//valid date was passed in and $mo is type int 
} 
else 
{ 
//invalid date let the user know 
} 
0

Вы можете проверить его тип с помощью:

gettype($mo); 

но null и пустой разные вещи, вы можете проверить с помощью этих функций:

if (empty($mo)) 
{ 
    // it is empty 
} 

if (is_null($mo)) 
{ 
    // it is null 
} 

Другой способ проверить, если переменная была установлена, чтобы использовать IsSet конструкцию.

if (isset($mo)) 
{ 
    // variable has been set 
} 
4

var_dump выводит переменные для целей отладки, он не используется для проверки значения в нормальном коде. PHP свободно набирается, большую часть времени не имеет значения, является ли ваша переменная строкой или int, хотя вы можете ее использовать, если вам нужно убедиться, что она одна, или использовать функции is_ для проверки.

Чтобы проверить, если что-то пусто:

if (empty($mo)) { 
    // error 
} 

пустой() возвращает истину, если переменная 0, NULL, ложь или пустая строка.

3

PHP предлагает функцию isset, чтобы проверить, нет ли переменной NULL и empty, чтобы проверить, является ли переменная пустой.

Для возврата типа, вы можете использовать функцию PHP gettype

if (!isset($mo) || is_empty($mo)) { 
// $mo is either NULL or empty. 
// display error message 
} 
+0

если (!isset ($ mo) || empty ($ mo)) является избыточным. if (empty ($ mo)) имеет такое же поведение. – goat

+0

Проблема с «пустой ($ var)» функцией - считать $ var = "0" как ... пустой. Который, очевидно, не ... – Olivier

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