Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果为null,则检查值返回0,否则返回值_Php - Fatal编程技术网

Php 如果为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

如果状态为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;
我可以使用空函数检查值是否为“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']];