Я ищу сокращенную версию этого кода на PHP:

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

По сути, я хочу проверить, установлена ​​ли переменная, а если нет, то вернуть значение по умолчанию.

0
mgoubert 4 Мар 2015 в 18:23

2 ответа

Лучший ответ

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';

2
Community 23 Май 2017 в 12:17

Если вам удастся полагаться на правдивость и ложность вместо более прямого isset, вы можете опустить среднее утверждение в тройной форме, например:

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

Это работает так, что если возвращаемое значение первого оператора оценивается как истинное, это значение будет возвращено, в противном случае будет использоваться резервный вариант. Вы можете увидеть, какие различные значения будут оцениваться как логические здесь

Важно отметить, что если вы используете этот шаблон, вы не можете заключить исходный оператор в isset, empty или любую подобную функцию. Если вы это сделаете, возвращаемое значение из этого оператора просто станет логическим значением. Таким образом, хотя приведенный выше код вернет либо значение $node->field_naam_adres['und'][0]['value'], либо пустую строку, следующий код:

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

Вернет либо TRUE, либо пустую строку.

0
Ben 4 Мар 2015 в 18:38