Php 如何进入';0';检查钥匙是否为空?
让我解释一下我的问题 这是我的阵列Php 如何进入';0';检查钥匙是否为空?,php,arrays,Php,Arrays,让我解释一下我的问题 这是我的阵列 $data['id']=1; $data['name']='Bhavik'; $data['salary']=0; $data['TA']=0; 在对数据进行处理之前,我要检查密钥是否为空。如果密钥为空,则我们必须忽略它 像 if(!empty($data['id'])) { $responseData['id']=$data['id']; } if(!empty($data['name'])) { $responseData['name']
$data['id']=1;
$data['name']='Bhavik';
$data['salary']=0;
$data['TA']=0;
在对数据进行处理之前,我要检查密钥是否为空。如果密钥为空,则我们必须忽略它
像
if(!empty($data['id']))
{
$responseData['id']=$data['id'];
}
if(!empty($data['name']))
{
$responseData['name']=$data['name'];
}
if(!empty($data['salary']))
{
$responseData['salary']=$data['salary'];
}
if(!empty($data['TA']))
{
$responseData['TA']=$data['TA'];
}
print_r(responseData);
它只给我id
和name
它认为0
为空
如果我想要零值的工资
和TA
,该怎么办
我可以通过检查密钥是否存在以及检查它是否有任何值,但是否有其他方法来完成
我没有使用key_exists,只是因为如果我们像$data['id]一样传递数组,但没有任何值,那么该条件将为true,但它给出了错误bcoz,在处理数据时它没有任何值
因此,任何帮助都将不胜感激。
谢谢如果条件语句
如果(!empty($a)|$a==0)
尝试此方法,希望它能解决您的问题将值视为字符串,使用
strlen()
检查字符串长度及其内部字符的有效性,在这种情况下(根据描述,我假设所有数字值)ctype\u digit()
如果不知道密钥是否存在,请使用
isset()
检查是否可以使用此函数,而不是空的:
function is_blank($value) {
return empty($value) && !is_numeric($value);
}
您可以使用严格比较进行检查
if(null!==$a){
//... 0 is passed as true value
}
那么,对于TA
和salary
来说,如果它不是0
,那么什么是有效的空值呢?如果用户通过TA时没有任何值0被认为是空的?那么检查if($data['TA']=='')或者if(strlen($data['TA'])是的,将没有任何值ctype\u digit()
仅在值为int时有效。不适用于浮点值。在某种程度上,为True…准确地说,它仅适用于由数字组成的字符串-传递类型为int
的值将返回FALSE,因此我说应将值视为字符串,必要时将其强制转换。ctype\u digit()
只是一个例子,没有银弹。“没有银弹”-嗯,可能有。更新了答案以解释@TiMESPLiNTER的评论。如果我没有将TA作为键传递,还有一个问题是它的抛出错误未定义索引TA,因为我们正在检查它0。使用以下if(isset($a)&(!empty($a)| |$a==0))
因为未找到相对键时会引发未定义索引错误