Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何进入';0';检查钥匙是否为空?_Php_Arrays - Fatal编程技术网

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))
因为未找到相对键时会引发未定义索引错误