Should i use isset or empty php?

I read somewhere that the isset() function treats an empty string as TRUE, therefore isset() is not an effective way to validate text inputs and text boxes from a HTML form.

So you can use empty() to check that a user typed something.

  1. Is it true that the isset() function treats an empty string as TRUE?

  2. Then in which situations should I use isset()? Should I always use !empty() to check if there is something?

For example instead of

if(isset($_GET['gender']))...

Using this

if(!empty($_GET['gender']))...

rath3r

3241 gold badge8 silver badges19 bronze badges

asked Aug 2, 2009 at 19:00

1

isset vs. !empty

FTA:

"isset() checks if a variable has a value including (False, 0 or empty string), but not NULL. Returns TRUE if var exists; FALSE otherwise.

On the other hand the empty() function checks if the variable has an empty value empty string, 0, NULL or False. Returns FALSE if var has a non-empty and non-zero value."

Should i use isset or empty php?

simhumileco

28.5k16 gold badges126 silver badges106 bronze badges

answered Aug 2, 2009 at 19:04

dassoukidassouki

6,1777 gold badges49 silver badges80 bronze badges

3

In the most general way :

  • isset tests if a variable (or an element of an array, or a property of an object) exists (and is not null)
  • empty tests if a variable (...) contains some non-empty data.


To answer question 1 :

$str = '';
var_dump(isset($str));

gives

boolean true

Because the variable $str exists.


And question 2 :

You should use isset to determine whether a variable exists ; for instance, if you are getting some data as an array, you might need to check if a key isset in that array.
Think about $_GET / $_POST, for instance.

Now, to work on its value, when you know there is such a value : that is the job of empty.

answered Aug 2, 2009 at 19:06

Pascal MARTINPascal MARTIN

389k77 gold badges647 silver badges656 bronze badges

Neither is a good way to check for valid input.

  • isset() is not sufficient because – as has been noted already – it considers an empty string to be a valid value.
  • ! empty() is not sufficient either because it rejects '0', which could be a valid value.

Using isset() combined with an equality check against an empty string is the bare minimum that you need to verify that an incoming parameter has a value without creating false negatives:

if( isset($_GET['gender']) and ($_GET['gender'] != '') )
{
  ...
}

But by "bare minimum", I mean exactly that. All the above code does is determine whether there is some value for $_GET['gender']. It does not determine whether the value for $_GET['gender'] is valid (e.g., one of ("Male", "Female","FileNotFound")).

For that, see Josh Davis's answer.

answered Apr 22, 2012 at 4:24

1

isset is intended to be used only for variables and not just values, so isset("foobar") will raise an error. As of PHP 5.5, empty supports both variables and expressions.

So your first question should rather be if isset returns true for a variable that holds an empty string. And the answer is:

$var = "";
var_dump(isset($var));

The type comparison tables in PHP’s manual is quite handy for such questions.

isset basically checks if a variable has any value other than null since non-existing variables have always the value null. empty is kind of the counter part to isset but does also treat the integer value 0 and the string value "0" as empty. (Again, take a look at the type comparison tables.)

answered Aug 2, 2009 at 19:12

GumboGumbo

628k106 gold badges767 silver badges838 bronze badges

1

If you have a $_POST['param'] and assume it's string type then

isset($_POST['param']) && $_POST['param'] != '' && $_POST['param'] != '0'

is identical to

!empty($_POST['param'])

answered Jan 26, 2013 at 17:18

Should i use isset or empty php?

macio.Junmacio.Jun

9,4091 gold badge44 silver badges41 bronze badges

isset() is not an effective way to validate text inputs and text boxes from a HTML form

You can rewrite that as "isset() is not a way to validate input." To validate input, use PHP's filter extension. filter_has_var() will tell you whether the variable exists while filter_input() will actually filter and/or sanitize the input.

Note that you don't have to use filter_has_var() prior to filter_input() and if you ask for a variable that is not set, filter_input() will simply return null.

answered Aug 2, 2009 at 20:59

Josh DavisJosh Davis

27.9k5 gold badges51 silver badges67 bronze badges

When and how to use:

  1. isset()

True for 0, 1, empty string, a string containing a value, true, false

False for null

e.g

$status = 0
if (isset($status)) // True
$status = null 
if (isset($status)) // False
  1. Empty

False for 1, a string containing a value, true

True for null, empty string, 0, false e.g

$status = 0
if(empty($status)) // true
$status = 1
if(empty($status)) // False

answered May 14, 2017 at 7:18

Should i use isset or empty php?

Fokwa BestFokwa Best

3,1515 gold badges33 silver badges48 bronze badges

isset is used to determine if an instance of something exists that is, if a variable has been instantiated... it is not concerned with the value of the parameter...

Pascal MARTIN... +1 ...

empty() does not generate a warning if the variable does not exist... therefore, isset() is preferred when testing for the existence of a variable when you intend to modify it...

answered Jun 13, 2014 at 12:04

MikeMike

991 silver badge3 bronze badges

isset() is used to check if the variable is set with the value or not and Empty() is used to check if a given variable is empty or not.

isset() returns true when the variable is not null whereas Empty() returns true if the variable is an empty string.

answered May 17, 2018 at 15:23

isset() vs empty() vs is_null()

Should i use isset or empty php?

answered Nov 28, 2019 at 20:33

Should i use isset or empty php?

Foued MOUSSIFoued MOUSSI

4,4133 gold badges16 silver badges35 bronze badges

isset($variable) === (@$variable !== null)
empty($variable) === (@$variable == false)

answered Aug 2, 2009 at 19:06

moomoo

7,4518 gold badges42 silver badges39 bronze badges

I came here looking for a quick way to check if a variable has any content in it. None of the answers here provided a full solution, so here it is:


It's enough to check if the input is '' or null, because:

Request URL .../test.php?var= results in $_GET['var'] = ''

Request URL .../test.php results in $_GET['var'] = null


isset() returns false only when the variable exists and is not set to null, so if you use it you'll get true for empty strings ('').

empty() considers both null and '' empty, but it also considers '0' empty, which is a problem in some use cases.

If you want to treat '0' as empty, then use empty(). Otherwise use the following check:

$var .'' !== '' evaluates to false only for the following inputs:

  • ''
  • null
  • false

I use the following check to also filter out strings with only spaces and line breaks:

function hasContent($var){
    return trim($var .'') !== '';
}

answered Feb 25, 2020 at 20:48

potatopotato

91510 silver badges18 bronze badges

Using empty is enough:

if(!empty($variable)){
    // Do stuff
}

Additionally, if you want an integer value it might also be worth checking that intval($variable) !== FALSE.

answered Aug 2, 2009 at 19:05

YouYou

21.9k3 gold badges50 silver badges64 bronze badges

2

I use the following to avoid notices, this checks if the var it's declarated on GET or POST and with the @ prefix you can safely check if is not empty and avoid the notice if the var is not set:

if( isset($_GET['var']) && @$_GET['var']!='' ){
    //Is not empty, do something
}

answered Aug 7, 2017 at 18:08

AztrozeroAztrozero

1331 silver badge8 bronze badges

2

    $var = '';
// Evaluates to true because $var is empty
if ( empty($var) ) {
echo '$var is either 0, empty, or not set at all';
}
// Evaluates as true because $var is set
if ( isset($var) ) {
 echo '$var is set even though it is empty';
    }

Source: Php.net

answered Jul 10, 2018 at 11:40

Should i use isset or empty php?

csandreas1csandreas1

2,35424 silver badges44 bronze badges

!empty will do the trick. if you need only to check data exists or not then use isset other empty can handle other validations

 "print me"];

if (!empty($array['name'])){
   echo $array['name'];
}

//output : {nothing}

////////////////////////////////////////////////////////////////////

$array2 = [ "name" => NULL];

if (!empty($array2['name'])){
   echo $array2['name'];
}

//output : {nothing}

////////////////////////////////////////////////////////////////////

$array3 = [ "name" => ""];

if (!empty($array3['name'])){
   echo $array3['name'];
}

//output : {nothing}  

////////////////////////////////////////////////////////////////////

$array4 = [1,2];

if (!empty($array4['name'])){
   echo $array4['name'];
}

//output : {nothing}

////////////////////////////////////////////////////////////////////

$array5 = [];

if (!empty($array5['name'])){
   echo $array5['name'];
}

//output : {nothing}

?>

answered Jun 3, 2020 at 9:34

Should i use isset or empty php?

When in doubt, use this one to check your Value and to clear your head on the difference between isset and empty.

if(empty($yourVal)) {
  echo "YES empty - $yourVal"; // no result
}
if(!empty($yourVal)) {
  echo "

NOT !empty- $yourVal"; // result } if(isset($yourVal)) { echo "

YES isset - $yourVal"; // found yourVal, but result can still be none - yourVal is set without value } if(!isset($yourVal)) { echo "

NO !isset - $yourVal"; // $yourVal is not set, therefore no result }

answered Oct 16, 2021 at 0:05

KJSKJS

1,1461 gold badge12 silver badges27 bronze badges

What can I use instead of isset in PHP?

The equivalent of isset($var) for a function return value is func() === null . isset basically does a !== null comparison, without throwing an error if the tested variable does not exist.

Should I use isset?

isset() is best for radios/checkboxes. Use empty() for strings/integer inputs. when a variable contains a value, using isset() will always be true. you set the variable yourself, so it's not a problem.

Does Isset check for empty string?

"isset() checks if a variable has a value including (False, 0 or empty string), but not NULL.

What's the difference between isset () and Array_key_exists ()?

Difference between isset() and array_key_exists() Function: The main difference between isset() and array_key_exists() function is that the array_key_exists() function will definitely tells if a key exists in an array, whereas isset() will only return true if the key/variable exists and is not null.