如果null返回0则检查值,否则返回该值

时间:2015-04-01 08:30:44

标签: php

如果状态为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;
}

4 个答案:

答案 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']];