Php 如果为null,则检查值返回0,否则返回值
如果状态为null,则最短的设置方法是返回“0”,否则返回值Php 如果为null,则检查值返回0,否则返回值,php,Php,如果状态为null,则最短的设置方法是返回“0”,否则返回值 $value['status'] = null; $STATUSES = array( 0 => 'Pending', 1 => 'Accepted', 2 => 'Suspended', 3 => 'Rejected', 4 => 'Waiting list', 5 => 'Terminated', 9 => 'Application
$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;
我可以使用空函数检查值是否为“null”,但我想知道是否有更聪明的方法
我正在寻找这样的本机函数
$status = $STATUSES[ valueToZiro( $value['status'] )];
function valueToZiro($val){
return empty($val)?0:$val;
}
对于空字符串$var=、空数组$var=array和0,使用empty也将返回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;
}
PHP自动将“null”索引转换为空字符串 因此,添加一个值为“0”的空字符串ass密钥可以修复您的问题,而无需检查$value['status']是否为null 我想这是不是一个理想的方法取决于你的情况
有关“空键”的详细信息,请参阅。如果您确定要为$value['status']获取整数,则可以将其强制转换为整数,它将更短:
// in case of null, casting will return 0
$status = $STATUSES[(int)$value['status']];
它不是if条件的短函数吗?是的,php的三元运算符@一个IDE建议使用$status==null,因为在新的PHP中,is_null可能会成为一个不推荐使用的函数versions@Fury?:是一个,如果是一个。运算符将表达式连接到更大的表达式中。控制结构决定下一步运行什么指令。它们属于完全不同的类别,没有?:是if的缩写。你应该在发布前在谷歌上搜索。定义的原因是什么?它不工作并触发警告。isset还检查值是否为空。谢谢大家的时间和精力,正如我所说,我不想使用任何条件。我们在这里玩得很开心;在数组搜索数组值时,在这种情况下需要使用array\u key\u exists函数。
$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;
}
$STATUSES = array(
'' => '0',
1 => 'Accepted',
// etc
);
// in case of null, casting will return 0
$status = $STATUSES[(int)$value['status']];