如何检查PHP[JSON]中的值是否为空
我有一些JSON参数,我想用if语句验证值是否为空。我在函数中编写了一个IF语句来检查,但是IF语句只检查参数,我想检查值是否为空。拜托,我该怎么办。 我的代码 使用如何检查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){} 或 或
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];
}