Подтвердить что ты не робот

Какую функцию я должен использовать для тестирования, если параметр var установлен или нет?

Меня иногда путают с использованием одного из них,

Скажем, у меня есть функция, называемая getmember($id)

function getmember($id)
{

// now this is the confusing part 
// how do i test if a $id was set or not set?

//solution 1
if(empty($id))
{
return false;
}


// solution 2

if(isset($id))
{
return false;
}

}

Это иногда мне не понятно, иногда, если параметр в функции задан как function($var="")

Тогда я делаю

if($var ==="")
{
return false;
} 

Что я должен использовать в следующий раз isset ? empty ? or ===''?

4b9b3361

Ответ 1

Здесь вы идете, полная разбивка того, что работает и когда:

<?
echo "<pre>";
$nullVariable = null;

echo 'is_null($nullVariable) = ' . (is_null($nullVariable) ? 'TRUE' : 'FALSE') . "\n";
echo 'empty($nullVariable) = ' . (empty($nullVariable) ? 'TRUE' : 'FALSE') . "\n";
echo 'isset($nullVariable) = ' . (isset($nullVariable) ? 'TRUE' : 'FALSE') . "\n";
echo '(bool)$nullVariable = ' . ($nullVariable ? 'TRUE' : 'FALSE') . "\n\n";

$emptyString = '';

echo 'is_null($emptyString) = ' . (is_null($emptyString) ? 'TRUE' : 'FALSE') . "\n";
echo 'empty($emptyString) = ' . (empty($emptyString) ? 'TRUE' : 'FALSE') . "\n";
echo 'isset($emptyString) = ' . (isset($emptyString) ? 'TRUE' : 'FALSE') . "\n";
echo '(bool)$emptyString = ' . ($emptyString ? 'TRUE' : 'FALSE') . "\n\n";

//note that the only one that won't throw an error is isset()
echo 'is_null($nonexistantVariable) = ' . (@is_null($nonexistantVariable) ? 'TRUE' : 'FALSE') . "\n";
echo 'empty($nonexistantVariable) = ' . (@empty($nonexistantVariable) ? 'TRUE' : 'FALSE') . "\n";
echo 'isset($nonexistantVariable) = ' . (isset($nonexistantVariable) ? 'TRUE' : 'FALSE') . "\n";
echo '(bool)$nonexistantVariable = ' . (@$nonexistantVariable ? 'TRUE' : 'FALSE') . "\n\n";
?>

ВЫХОД:

is_null($nullVariable) = TRUE
empty($nullVariable) = TRUE
isset($nullVariable) = FALSE
(bool)$nullVariable = FALSE

is_null($emptyString) = FALSE
empty($emptyString) = TRUE
isset($emptyString) = TRUE
(bool)$emptyString = FALSE

is_null($nonexistantVariable) = TRUE
empty($nonexistantVariable) = TRUE
isset($nonexistantVariable) = FALSE
(bool)$nonexistantVariable = FALSE

Когда я показываю (bool)$variable выше, вы можете использовать его в условном выражении. Например, чтобы проверить, является ли переменная пустой или пустой, вы можете сделать:

if (!$variable)
    echo "variable is either null or empty!";

Но лучше использовать функцию, так как она немного читаема. Но это ваш выбор.

Также проверьте таблицу сравнения типов PHP. Это в основном то, что я только что сделал выше, кроме гораздо большего.

Ответ 2

Если вы просто хотите узнать, определена ли переменная, используйте isset()

Если вы хотите увидеть, была ли она инициализирована, используйте is_null()

Если вы хотите сравнить его значение с чем-то другим, используйте ==