如何检查PHP[JSON]中的值是否为空

如何检查PHP[JSON]中的值是否为空,php,Php,我有一些JSON参数,我想用if语句验证值是否为空。我在函数中编写了一个IF语句来检查,但是IF语句只检查参数,我想检查值是否为空。拜托,我该怎么办。 我的代码 使用empty()函数检查值 $str = ''; // or $str = null; // or $str = false; var_dump(empty($str)) // output => true 要检查是否定义了变量,可以使用isset 应使用identity运算符测试变量 if (!$var){} 或 或

我有一些JSON参数,我想用if语句验证值是否为空。我在函数中编写了一个IF语句来检查,但是IF语句只检查参数,我想检查值是否为空。拜托,我该怎么办。 我的代码

使用
empty()
函数检查值

$str = '';
// or 
$str = null;
// or 
$str = false;
var_dump(empty($str)) // output => true
要检查是否定义了变量,可以使用
isset


应使用identity运算符测试变量

if (!$var){}


您可以使您的函数更清晰一些,因为您正在进行的测试已经返回true或false。没有必要将它们与真实进行比较

if ($required AND empty($value)) {
        $this->throwError(EMPTY_PARAMETER, $fieldName . " parameter is missing"); //HERE check if the parameter is missing and fires error, but I also want to include value check
    } elseif ($required AND empty($fieldName)) {
        $this->throwError(API_PARAM_REQUIRED, $fieldName . " is required");
    } elseif (!empty($fieldName) AND empty($value)) {
        $this->throwError(API_PARAM_REQUIRED, $fieldName . " value is required");
    }
}

您的主要问题是将值(从数组中获取)传递给方法并进行检查。因为在这一点上,如果未设置数组键,将触发警告,并将值强制为
null

empty()
:当未设置变量或其计算结果为某个错误值时(例如
false
null
[]
,等等),将返回true

isset()
:仅当未设置值时才会返回true

因此:

因此,您可以按如下方式编辑验证函数:

public function validateParameter($fieldName, &$inputArray, $required = true){

    if($required){
        if(!isset($inputArray[$fieldName])){
            $this->throwError(EMPTY_PARAMETER, $fieldName . " parameter is missing");
        } else if (empty($inputArray[$fieldName])){
            $this->throwError(API_PARAM_REQUIRED, $fieldName . " value is required");
        }
    } else {
        if(!isset($inputArray[$fieldName])){
            return null;
        }
    }

    return $inputArray[$fieldName];
  }
注意:由于您正在检查类属性
$this->param
。您可以避免将数组传递给方法,而只在函数中引用
$this->param
,除非它应该更易于重用


我没有完全理解您在缺少块中所期望的结果,但是做出了合理的假设

您看到了吗,您的方法是3个参数,而您用4调用它?当方法没有返回时,您是否看到在变量中分配他们的调用?
if (empty($field)){}
if ($required AND empty($value)) {
        $this->throwError(EMPTY_PARAMETER, $fieldName . " parameter is missing"); //HERE check if the parameter is missing and fires error, but I also want to include value check
    } elseif ($required AND empty($fieldName)) {
        $this->throwError(API_PARAM_REQUIRED, $fieldName . " is required");
    } elseif (!empty($fieldName) AND empty($value)) {
        $this->throwError(API_PARAM_REQUIRED, $fieldName . " value is required");
    }
}
$a = ['one' => false];
empty($a['one']); //true
isset($a['one']); //true
isset($a['two']); //false
public function validateParameter($fieldName, &$inputArray, $required = true){

    if($required){
        if(!isset($inputArray[$fieldName])){
            $this->throwError(EMPTY_PARAMETER, $fieldName . " parameter is missing");
        } else if (empty($inputArray[$fieldName])){
            $this->throwError(API_PARAM_REQUIRED, $fieldName . " value is required");
        }
    } else {
        if(!isset($inputArray[$fieldName])){
            return null;
        }
    }

    return $inputArray[$fieldName];
  }