isset vs empty vs is_null

后端 未结 14 2166
野的像风
野的像风 2020-11-29 08:34

I\'m trying to write a script that when a user uploads a file and does not enter a name an error is returned. I\'ve tried using is_null, empty, and isset and they all do not

14条回答
  •  心在旅途
    2020-11-29 08:58

    I wrote this php page that hopefully will be of help to you. If you run it, it shows the interaction of these particular types of variables with these functions (plus one I made for myself), and also it compares them with each other with the == operator: https://pastebin.com/whPFMams

    
    
    
        
    
    
        

    FUNCTIONS COMPARISON


    Variables

    class obj{}; $n; Array: "a" => -1, "b" => 0, "c" => 0.0, "d" => '', "e" => ' ', "f" => '0', "g" => "\0", "h" => true, "i" => false, "j" => null, "k" => array(), "l" => new obj(), "m" => new stdClass(), "n" => $n (undefined) z = (undeclared)

    My function

    function isvalid($value,$strict=false){ if( !is_null($value) && value!==false && (!empty($value) || $value == 0) ){ if($strict) { if(is_bool($value) || is_array($value) || is_object($value)) {return false;} else {return true;} } else {return true;} } else {return false;} }

    Var_dump

    -1, "b" => 0, "c" => 0.0, "d" => '', "e" => ' ', "f" => '0', "g" => "\0", "h" => true, "i" => false, "j" => null, "k" => array(), "l" => new obj(), "m" => new stdClass(), "n" => $n //"z" ]; echo var_dump($values)."\n z = "; echo var_dump($z)."\n"; ?>

    "; echo var_dump($values["a"]); echo "
    : a = -1 "; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; ?> $val){ echo ' '; foreach ($values as $key2 => $val2){ echo ''; } echo ''; echo ''; } //z echo ' '; foreach ($values as $key2 => $val2){ echo ''; } echo ''; echo ''; //!empty || ==0 echo ' '; foreach ($values as $key => $val){ echo ''; } echo ''; echo ''; //isvalid echo ' '; foreach ($values as $key => $val){ echo ''; } echo ''; echo ''; //isvalid strict echo ' '; foreach ($values as $key => $val){ echo ''; } echo ''; echo ''; //!is_null echo ' '; foreach ($values as $key => $val){ echo ''; } echo ''; echo ''; //isset echo ' '; foreach ($values as $key => $val){ echo ''; } echo ''; echo ''; //!empty echo ' '; foreach ($values as $key => $val){ echo ''; } echo ''; echo ''; // if echo ' '; foreach ($values as $key => $val){ echo ''; } echo ''; echo ''; ?> "; echo var_dump($values["a"]); echo "
    : a = -1 "; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; ?>
    == and other "; echo var_dump($values["b"]); echo "
    : b = 0
    "; echo var_dump($values["c"]); echo "
    : c = 0.0
    "; echo var_dump($values["d"]); echo "
    : d = ''
    "; echo var_dump($values["e"]); echo "
    : e = ' '
    "; echo var_dump($values["f"]); echo "
    : f = '0'
    "; echo var_dump($values["g"]); echo "
    : g = '/0'
    "; echo var_dump($values["h"]); echo "
    : h = true
    "; echo var_dump($values["i"]); echo "
    : i = false
    "; echo var_dump($values["j"]); echo "
    : j = null
    "; echo var_dump($values["k"]); echo "
    : k = empty array
    "; echo var_dump($values["l"]); echo "
    : l = empty object (Notices with numbers)
    "; echo var_dump($values["m"]); echo "
    : m = empty stdClass (Notices with numbers)
    "; echo var_dump($values["n"]); echo "
    : n = undefined
    "; echo var_dump($z); echo "
    : z = undeclared (Notices)
    '; echo var_dump($val); echo '
    : '.$key.'
    '; echo $val==$val2 ? var_dump($val==$val2) : /*var_dump($val==$val2).*/''; echo''; echo $val==$z ? var_dump($val==$z) : /*var_dump($val==$z).*/''; echo'
    '; echo var_dump($z); echo '
    : z (Notices)
    '; echo $z==$val2 ? var_dump($z==$val2) : /*var_dump($z==$val2).*/''; echo''; echo $z==$z ? var_dump($z==$z) : /*var_dump($z==$z).*/''; echo'
    !empty || ==0 '; echo !empty($val) || $val==0 ? var_dump(!empty($val) || $val==0) : /*var_dump(!empty($val) || $val==0.*/''; echo''; echo !empty($z) || $z==0 ? var_dump(!empty($z) || $z==0) : /*var_dump(!empty($z) || $z==0).*/''; echo'
    isvalid() '; echo isvalid($val) ? var_dump(isvalid($val)) : /*var_dump(isvalid($val)).*/''; echo''; echo isvalid($z) ? var_dump(isvalid($z)) : /*var_dump(isvalid($z)).*/''; echo'
    isvalid(strict) '; echo isvalid($val,true) ? var_dump(isvalid($val,true)) : /*var_dump(isvalid($val,true)).*/''; echo''; echo isvalid($z,true) ? var_dump(isvalid($z,true)) : /*var_dump(isvalid($z,true)).*/''; echo'
    !is_null '; echo !is_null($val) ? var_dump(!is_null($val)) : /*var_dump(!is_null($val)).*/''; echo''; echo !is_null($z) ? var_dump(!is_null($z)) : /*var_dump(!is_null($z)).*/''; echo'
    isset (No Notices)'; echo isset($val) ? var_dump(isset($val)) : /*var_dump(isset($val)).*/''; echo''; echo isset($z) ? var_dump(isset($z)) : /*var_dump(isset($z)).*/''; echo'
    !empty (No Notices) '; echo !empty($val) ? var_dump(!empty($val)) : /*var_dump(!empty($val)).*/''; echo''; echo !empty($z) ? var_dump(!empty($z)) : /*var_dump(!empty($z)).*/''; echo'
    if '; echo $val ? var_dump(true) : /*var_dump(false).*/''; echo''; echo $z ? var_dump(true) : /*var_dump(false).*/''; echo'
    functions "; echo var_dump($values["b"]); echo "
    : b = 0
    "; echo var_dump($values["c"]); echo "
    : c = 0.0
    "; echo var_dump($values["d"]); echo "
    : d = ''
    "; echo var_dump($values["e"]); echo "
    : e = ' '
    "; echo var_dump($values["f"]); echo "
    : f = '0'
    "; echo var_dump($values["g"]); echo "
    : g = '/0'
    "; echo var_dump($values["h"]); echo "
    : h = true
    "; echo var_dump($values["i"]); echo "
    : i = false
    "; echo var_dump($values["j"]); echo "
    : j = null
    "; echo var_dump($values["k"]); echo "
    : k = empty array
    "; echo var_dump($values["l"]); echo "
    : l = empty object (Notices with numbers)
    "; echo var_dump($values["m"]); echo "
    : m = empty stdClass (Notices with numbers)
    "; echo var_dump($values["n"]); echo "
    : n = undefined
    "; echo var_dump($z); echo "
    : z = undeclared (Notices)

    (Notices) : This line is full of Notices.
    (Notices with numbers) : This line has Notices about number types interactions.
    (No Notices) : This line has absolutely no Notices.

提交回复
热议问题