如果状态为null,则设置最短的方法是什么?' 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;
}
答案 0 :(得分:1)
if (array_key_exists($value['status'],$STATUSES) {
return $STATUSES[$value['status']];
}
return 0;
答案 1 :(得分:1)
return is_null($status)?0:$status;
使用empty也会在空字符$var = ""
,空数组$var = array()
和0
上返回true。使用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;
}
答案 2 :(得分:1)
PHP自动将'null'索引转换为空字符串
因此,添加值为'0'
的空字符串ass键可以解决您的问题,而无需检查$value['status']
是否为空。
$STATUSES = array(
'' => '0',
1 => 'Accepted',
// etc
);
这是否是一种理想的方法取决于你的情况,我想......
有关'null keys'
的更多信息,请参阅“Arrays with NULL keys”答案 3 :(得分:1)
如果您确定为$value['status']
获取整数,则可以将其转换为整数,它会更短:
// in case of null, casting will return 0
$status = $STATUSES[(int)$value['status']];