如果返回0,则检查值否则返回值
如果状态为null,则设置的最短方式返回值'0'否则返回值。如果返回0,则检查值否则返回值
$value['status'] = null;
$STATUSES = array(
0 => 'Pending',
1 => 'Accepted',
2 => 'Suspended',
3 => 'Rejected',
4 => 'Waiting list',
5 => 'Terminated',
9 => 'Application in Progress'
);
$status = $STATUSES[$value['status']];
echo $status;
我可以使用empty()函数来检查值是否为'null',但我想知道是否有更聪明的方法。
我正在寻找一个像这样的原生函数。
$status = $STATUSES[ valueToZiro($value['status'])];
function valueToZiro($val){
return empty($val)?0:$val;
}
如果确定为获得的更多信息整数为您的$value['status']
你可以把它转换为整数,它会更短:
// in case of null, casting will return 0
$status = $STATUSES[(int)$value['status']];
聪明的感谢哥们。我不知道为什么它不会出现在我的脑海里:D – Fury 2015-04-01 08:46:01
if (array_key_exists($value['status'],$STATUSES) {
return $STATUSES[$value['status']];
}
return 0;
'in_array'搜索数组值,在这种情况下需要使用'array_key_exists'函数。 – iamawebgeek 2015-04-01 08:46:47
哦,你是对的 – Unex 2015-04-01 08:49:20
return is_null($status)?0:$status;
使用空还将在空字符串$var = ""
返回true,对空数组$var = array()
和0
。使用is_null
是检查null
值的最安全方法。
编辑:虽然上面这个答案回答您的主要问题,你的问题不属于你的代码......要解决你的代码,我会做:
$value['status'] = null;
$STATUSES = array(
0 => 'Pending',
1 => 'Accepted',
2 => 'Suspended',
3 => 'Rejected',
4 => 'Waiting list',
5 => 'Terminated',
9 => 'Application in Progress'
);
define('STATUSES', $STATUSES);
if(isset($STATUSES[$value['status']])){
echo $STATUSES[$value['status']];
}else{
return 0;
}
PHP自动将一个“空”指数到一个空字符串 因此,添加一个值为'0'
的空字符串驴密钥,可以解决您的问题,而无需检查$value['status']
是否为空。
$STATUSES = array(
'' => '0',
1 => 'Accepted',
// etc
);
这是否是一个可取的方法取决于你的情况,我想...
参见“Arrays with NULL keys”关于“null键”
你应该尝试搜索谷歌,然后张贴在SO。 – 2015-04-01 08:35:10
define()是什么原因?它不起作用并触发警告。 – axiac 2015-04-01 08:36:38
'isset'也检查它是否为空的值 – iamawebgeek 2015-04-01 08:37:44