简写isset(),如果没有,则返回默认值

时间:2015-03-04 15:23:24

标签: php isset shorthand

我在PHP中寻找这段代码的速记版本:

$address = isset($node->field_naam_adres['und'][0]['value']) ? $node->field_naam_adres['und'][0]['value'] : '';

基本上,我想检查变量是否已设置,如果没有,则返回默认值。

2 个答案:

答案 0 :(得分:1)

https://stackoverflow.com/a/18603279/165330

在php 7之前:没有

$address = isset($node->field_naam_adres['und'][0]['value']) ? $node->field_naam_adres['und'][0]['value'] : '';

来自php 7:是的

$address = $node->field_naam_adres['und'][0]['value'] ?? 'default';

答案 1 :(得分:0)

如果你可以依靠真实和虚假而不是更直接的isset,你可以在这样的三元组中省略中间陈述:

$address = $node->field_naam_adres['und'][0]['value'] ?: '';

这样做,如果第一个语句的返回值评估为真值,则返回该值,否则将使用回退。您可以看到各种值将被评估为布尔值here

重要的是要注意,如果使用此模式,则无法将初始语句包装在issetempty或任何类似函数中。如果这样做,那么该语句的返回值只是一个布尔值。因此,虽然上面的代码将返回$node->field_naam_adres['und'][0]['value']的值或空字符串,但以下代码:

$address = isset($node->field_naam_adres['und'][0]['value']) ?: '';

将返回TRUE或空字符串。