2015-01-27 4 views
-3

Я пытаюсь проверить строку для порожняком или NULL:Проверка NULL в PHP

if (strlen((string)$comment) > 0 And !($comment === NULL)) 
{ .... } 

но это, кажется, не поднимая NULL.

+1

Что содержит ваша переменная? Используйте 'var_dump()' для проверки ошибок. – mario

+0

var_dump говорит, что это null, но я не могу согласиться. Используя if (is_null ($ comment)) {stuff}, он не делает этого. – RGriffiths

ответ

4

Используйте empty() вместо проверки длины строки и если она равна нулю.

if (!empty($comment)) 

Ради обучения, вы можете использовать is_null() в вашем конкретном примере:

if (strlen((string)$comment) > 0 && !is_null($comment)) 

Но мой первый пример это лучший способ сделать это.

+0

'empty' также триггеры для строки' '0" 'хотя. – mario

+0

@mario True. Ответ на ваш комментарий будет рассказывать. –

2

использовать это как ваш условный:

if (!is_null($comment) && strlen($comment) > 0) 
{ .... } 

но Джон Conde предложил, вы могли бы сократить это к одной проверки с помощью empty(), но знаю, что это будет проверить, если значение в $comment является '', NULL, '0', false и 0

if (!empty($comment)) 
{ .... } 
+0

Состояние '> 0' может быть избыточным. И я бы избегал явного кастинга. Если OP передал массив, он скорее предпочел бы предупреждение, чем неправильный результат (strlen ((string) array()) == 5). – mario

+0

Что делать, если '$ comment' представляет целое число, которое он хочет преобразовать в строку, чтобы проверить длину, хотя'> 0' может быть избыточным, что может быть проще следовать за ним, когда он снова просмотрит код. –

+1

'strlen' выполняет неявное строковое преобразование, за исключением NULL, массивов и объектов IIRC. Но верно, '> 0' можно сохранить, если это для удобства чтения. – mario