Я ищу сокращенную версию этого кода на PHP:
$address = isset($node->field_naam_adres['und'][0]['value']) ? $node->field_naam_adres['und'][0]['value'] : '';
По сути, я хочу проверить, установлена ли переменная, а если нет, то вернуть значение по умолчанию.
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';
Если вам удастся полагаться на правдивость и ложность вместо более прямого 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
, либо пустую строку.
Похожие вопросы
Новые вопросы
php
PHP — это широко используемый язык сценариев общего назначения с открытым исходным кодом, мультипарадигмальный, динамически типизированный и интерпретируемый, изначально разработанный для веб-разработки на стороне сервера. Используйте этот тег для вопросов о программировании на языке PHP.