如果返回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; 
} 
+0

你应该尝试搜索谷歌,然后张贴在SO。 – 2015-04-01 08:35:10

+0

define()是什么原因?它不起作用并触发警告。 – axiac 2015-04-01 08:36:38

+0

'isset'也检查它是否为空的值 – iamawebgeek 2015-04-01 08:37:44

如果确定为获得的更多信息整数为您的$value['status']你可以把它转换为整数,它会更短:

// in case of null, casting will return 0 
$status = $STATUSES[(int)$value['status']]; 
+0

聪明的感谢哥们。我不知道为什么它不会出现在我的脑海里:D – Fury 2015-04-01 08:46:01

if (array_key_exists($value['status'],$STATUSES) { 
     return $STATUSES[$value['status']]; 
} 
return 0; 
+0

'in_array'搜索数组值,在这种情况下需要使用'array_key_exists'函数。 – iamawebgeek 2015-04-01 08:46:47

+0

哦,你是对的 – 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; 
} 
+0

是不是它的短期功能,如果条件? – Fury 2015-04-01 08:34:57

+0

是的,php的三元运算符。 http://davidwalsh.name/php-shorthand-if-else-ternary-operators – Salketer 2015-04-01 08:36:23

+0

@Fury纠正它被称为三元运算符。 – Daan 2015-04-01 08:36:31

PHP自动将一个“空”指数到一个空字符串 因此,添加一个值为'0'的空字符串驴密钥,可以解决您的问题,而无需检查$value['status']是否为空。

$STATUSES = array(
    '' => '0', 
    1 => 'Accepted', 
    // etc 
); 

这是否是一个可取的方法取决于你的情况,我想...

参见“Arrays with NULL keys”关于“null键”