我在PHP中寻找这段代码的速记版本:
$address = isset($node->field_naam_adres['und'][0]['value']) ? $node->field_naam_adres['und'][0]['value'] : '';
基本上,我想检查变量是否已设置,如果没有,则返回默认值。
答案 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
重要的是要注意,如果使用此模式,则无法将初始语句包装在isset
,empty
或任何类似函数中。如果这样做,那么该语句的返回值只是一个布尔值。因此,虽然上面的代码将返回$node->field_naam_adres['und'][0]['value']
的值或空字符串,但以下代码:
$address = isset($node->field_naam_adres['und'][0]['value']) ?: '';
将返回TRUE
或空字符串。