Does 0 count as empty php?

Code will explain more:

$var = 0;

if (!empty($var)){
echo "Its not empty";
} else {
echo "Its empty";
}

The result returns "Its empty". I thought empty() will check if I already set the variable and have value inside. Why it returns "Its empty"??

asked Feb 8, 2010 at 9:16

mysqllearnermysqllearner

13.1k15 gold badges42 silver badges43 bronze badges

10

http://php.net/empty

The following things are considered to be empty:

  • "" (an empty string)
  • 0 (0 as an integer)
  • 0.0 (0 as a float)
  • "0" (0 as a string)
  • NULL
  • FALSE
  • array() (an empty array)
  • var $var; (a variable declared, but without a value in a class)

Note that this is exactly the same list as for a coercion to Boolean false. empty is simply !isset($var) || !$var. Try isset instead.

relipse

1,6441 gold badge17 silver badges22 bronze badges

answered Feb 8, 2010 at 9:18

15

I was wondering why nobody suggested the extremely handy Type comparison table. It answers every question about the common functions and compare operators.

A snippet:

Expression      | empty($x)
----------------+--------
$x = "";        | true    
$x = null       | true    
var $x;         | true    
$x is undefined | true    
$x = array();   | true    
$x = false;     | true    
$x = true;      | false   
$x = 1;         | false   
$x = 42;        | false   
$x = 0;         | true    
$x = -1;        | false   
$x = "1";       | false   
$x = "0";       | true    
$x = "-1";      | false   
$x = "php";     | false   
$x = "true";    | false   
$x = "false";   | false   

Along other cheatsheets, I always keep a hardcopy of this table on my desk in case I'm not sure

Does 0 count as empty php?

Pikamander2

6,3033 gold badges42 silver badges63 bronze badges

answered Feb 8, 2010 at 9:30

Does 0 count as empty php?

Dan SoapDan Soap

9,9491 gold badge39 silver badges49 bronze badges

1

In case of numeric values you should use is_numeric function:

$var = 0;

if (is_numeric($var))
{
  echo "Its not empty";
} 
else 
{
    echo "Its empty";
}

Does 0 count as empty php?

TerryA

56.9k11 gold badges117 silver badges137 bronze badges

answered May 29, 2013 at 7:22

Does 0 count as empty php?

Khandad NiaziKhandad Niazi

2,2863 gold badges24 silver badges21 bronze badges

1

Use strlen() instead. I ran onto the same issue using 1/0 as possible values for some variables. I am using if (strlen($_POST['myValue']) == 0) to test if there is a character or not in my variable.

Does 0 count as empty php?

answered Aug 25, 2014 at 11:09

Calin RusuCalin Rusu

1771 silver badge5 bronze badges

4

I was recently caught with my pants down on this one as well. The issue we often deal with is unset variables - say a form element that may or may not have been there, but for many elements, 0 (or the string '0' which would come through the post more accurately, but still would be evaluated as "falsey") is a legitimate value say on a dropdown list.

using empty() first and then strlen() is your best best if you need this as well, as:

if(!empty($var) && strlen($var)){
    echo '"$var" is present and has a non-falsey value!';
}

answered Nov 10, 2015 at 12:21

Oliver WilliamsOliver Williams

5,3886 gold badges31 silver badges68 bronze badges

From a linguistic point of view empty has a meaning of without value. Like the others said you'll have to use isset() in order to check if a variable has been defined, which is what you do.

Does 0 count as empty php?

Giacomo1968

25.1k11 gold badges69 silver badges96 bronze badges

answered Feb 8, 2010 at 9:32

Elzo ValugiElzo Valugi

26.3k14 gold badges91 silver badges114 bronze badges

1

empty() returns true for everything that evaluates to FALSE, it is actually a 'not' (!) in disguise. I think you meant isset()

answered Feb 8, 2010 at 9:19

Does 0 count as empty php?

soulmergesoulmerge

71.9k19 gold badges117 silver badges152 bronze badges

To accept 0 as a value in variable use isset

Check if variable is empty

$var = 0;

if ($var == '') {
    echo "empty";
} else {
    echo "not empty"; 
}
//output is empty

Check if variable is set

$var = 0;

if (isset($var)) {
    echo "not empty";
} else {    
    echo "empty";
}
//output is not empty

answered May 18, 2017 at 9:23

Does 0 count as empty php?

bhu1stbhu1st

1,23211 silver badges23 bronze badges

It 's working for me!

//
if(isset($_POST['post_var'])&&$_POST['post_var']!==''){
echo $_POST['post_var'];
}

//results:
1 if $_POST['post_var']='1'
0 if $_POST['post_var']='0'
skip if $_POST['post_var']=''

answered Aug 11, 2017 at 6:37

Does 0 count as empty php?

The following things are considered to be empty:

  • "" (an empty string)
  • 0 (0 as an integer)
  • "0" (0 as a string)
  • NULL
  • FALSE
  • array() (an empty array)
  • var $var; (a variable declared, but without a value in a class)

From PHP Manual

In your case $var is 0, so empty($var) will return true, you are negating the result before testing it, so the else block will run giving "Its empty" as output.

answered Feb 8, 2010 at 9:19

codaddictcodaddict

434k80 gold badges487 silver badges524 bronze badges

From manual: Returns FALSE if var has a non-empty and non-zero value.

The following things are considered to be empty:

  • "" (an empty string)
  • 0 (0 as an integer)
  • "0" (0 as a string) NULL
  • FALSE array() (an empty array) var
  • $var; (a variable declared, but without a value in a class)

More: http://php.net/manual/en/function.empty.php

answered Feb 8, 2010 at 9:20

Adam KissAdam Kiss

11.7k9 gold badges47 silver badges81 bronze badges

Actually isset just check if the variable sets or not.In this case if you want to check if your variable is really zero or empty you can use this example:

$myVar = '';
if (empty($myVar))
{
  echo "Its empty";
}
echo "<br/>";

if ($myVar===0)
{
  echo "also zero!";
}

just for notice $myVar==0 act like empty function.

Toon Krijthe

52.2k37 gold badges143 silver badges201 bronze badges

answered Mar 8, 2011 at 7:17

arasharash

111 bronze badge

if (empty($var) && $pieces[$var] != '0') {
//do something
}

In my case this code worked.

answered Jun 26, 2014 at 8:27

0

You need to use isset() to check whether value is set.

answered May 15, 2019 at 4:22

1

empty should mean empty .. whatever deceze says.

When I do

$var = '';    
$var = '0';

I expect that var_dump(empty($var)); will return false.

if you are checking things in an array you always have to do isset($var) first.

Does 0 count as empty php?

Saad

9912 gold badges18 silver badges31 bronze badges

answered Oct 13, 2017 at 18:07

use only ($_POST['input_field_name'])!=0 instead of !($_POST['input_field_name'])==0 then 0 is not treated as empty.

answered Jan 9, 2018 at 16:35

Not sure if there are still people looking for an explanation and a solution. The comments above say it all on the differences between TRUE / FALSE / 1 / 0.
I would just like to bring my 2 cents for the way to display the actual value.

BOOLEAN

If you're working with a Boolean datatype, you're looking for a TRUE vs. FALSE result; if you store it in MySQL, it will be stored as 1 resp. 0 (if I'm not mistaking, this is the same in your server's memory).

So to display the the value in PHP, you need to check if it is true (1) or false (0) and display whatever you want: "TRUE" or "FALSE" or possibly "1" or "0".
Attention, everything bigger (or different) than 0 will also be considered as TRUE in PHP. E.g.: 2, "abc", etc. will all return TRUE.

BIT, TINYINT

If you're working with a number datatype, the way it is stored is the same.
To display the value, you need to tell PHP to handle it as a number. The easiest way I found is to multiply it by 1.

answered Feb 17, 2019 at 19:55

Does 0 count as empty php?

proper example. just create int type field( example mobile number) in the database and submit an blank value for the following database through a form or just insert using SQL. what it will be saved in database 0 because it is int type and cannot be saved as blank or null. therefore it is empty but it will be saved as 0. so when you fetch data through PHP and check for the empty values. it is very useful and logically correct.

0.00, 0.000, 0.0000 .... 0.0...0 is also empty and the above example can also be used for storing different type of values in database like float, double, decimal( decimal have different variants like 0.000 and so on.

answered Mar 6, 2019 at 6:38

Does 0 count as empty php?

Sayed Mohd AliSayed Mohd Ali

2,1113 gold badges11 silver badges27 bronze badges

Is 0 considered empty PHP?

PHP empty() Function This function returns false if the variable exists and is not empty, otherwise it returns true. The following values evaluates to empty: 0. 0.0.

Is 0 an empty value?

The answer to that is rather simple: a NULL means that there is no value, we're looking at a blank/empty cell, and 0 means the value itself is 0.

What can I use instead of empty PHP?

Basically, notempty() is the same as ! empty() for all values except for "0", for which it returns true. Edit: If you are using error_reporting(E_ALL), you will not be able to pass an undefined variable to custom functions by value. And as mercator points out, you should always use E_ALL to conform to best practices.

Is set empty PHP?

empty() function in PHP ? The isset() function is an inbuilt function in PHP which checks whether a variable is set and is not NULL. This function also checks if a declared variable, array or array key has null value, if it does, isset() returns false, it returns true in all other possible cases.