2013-04-08 5 views
0

У меня есть этот код:PHP проверка действительной функции возврата

$myVariable = someRanDomFunction($blah)

Проблема заключается в том, что someRanDomFunction() может возвращать массив, объект, пустой массив, логическое значение или NULL.

Что делать, если есть лучший способ проверить, что у $myVariable есть данные?

сейчас я делаю это:

!empty($myVariable)

Будет ли охватить все случаи? или, может быть, я должен сделать ($myVariable != NULL && !empty($myVariable))?

UPDATE *

К 'некоторые данные' я имею в виду, если его TRUE BOOL, не пустой массив, и любое значение, отличное от NULL

+0

... теперь первые вещи первые ... когда возвращаемое значение считается «провал»? В зависимости от возвращаемого значения, вы должны вызвать конкретную процедуру оценки, так или иначе? Так почему бы не проверить на 'is_array' и т. Д. Вручную, один за другим, пока не получишь это правильно? –

+1

Тогда пустое именно то, что вам нужно;) – bwoebi

+0

обновлено мое сообщение – rinchik

ответ

2
var_dump(empty(NULL)); // returns bool(true) 

пусто достаточно. Если вы говорите, что boolean - это не данные, проверьте также: is_bool. (empty(false) возвращается также true)

Или лучше, используйте только if ($result); этого должно быть достаточно.

Или что вы называете «некоторыми данными»?

UPDATE: Что вам нужно: (! Пустой ([]))

PHP> var_dump;

BOOL (ложь)

PHP> var_dump (пусто ("!"));

BOOL (ложь)

PHP> var_dump (пустой (ложь)!);

BOOL (ложь)

PHP> var_dump (пусто (правда!));

BOOL (истина)

PHP> var_dump (пустой (нулевой)!);

BOOL (ложь)

+0

Спасибо большое :) +1 – rinchik

1

Просто делает неявное булево проверку исключит false, array() и null.

if ($myVariable) { 
    //will execute as long as myVariable isn't an empty array, false, null, or 0/'0' 
} 

!empty() делает то же самое, с добавлением подавления предупреждений о неопределенных переменных/индексов массива. Тем не менее, это немного словнее.

+1

'! Empty ('0')! == (bool) $ myVariable' – bwoebi

+0

@bwoebi - о чем вы говорите? –

+0

'[...] или 0/'0'' в вашем встроенном комментарии. (вы сказали, что пустой будет делать то же самое) – bwoebi

0

Если someRanDomFunction может возвращать массив, объект, BOOL или обнулить это плохой путь. Что-то не так с логикой.

Однако вы можете использовать оператор OR (||), а не AND.

($myVariable != NULL || !empty($myVariable) || $myVariable == false) 
+0

пустой уже обложки false & null – bwoebi

+0

есть AND. Не OR. –

+0

@bwoebi, спасибо. Я не знал этого. – KryDos

0

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

В основном пустой проверяется значение null, поэтому ваш второй способ является избыточным. Вы также можете использовать isset

0

, если массив, объект и логическое значение true являются данными. И остальное: пустой массив, логическое значение false или NULL, не являются «данными».

Затем раствор, будет такой:

$myVariable = someRanDomFunction($blah); 

if(!empty($myVariable)) { 
//... 
} 
+0

Что такое «данные» для вас? << Редактор резьбы обновил свой пост – bwoebi

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