При генерации тега select для логического значения я использую следующий код:
<select name="name" id="id"> <option value="0"<?php if(empty($value)): ?> selected="selected"<?php endif; ?>>Off</option> <option value="1"<?php if($value): ?> selected="selected"<?php endif; ?>>Off</option> </select>
Итак, вопрос в том, будет ли эта карта правильно, так что ни в коем случае оба параметра не будут иметь свойство selected="selected" ?
Единственная причина, по которой я вижу использование empty() заключается в том, чтобы избежать предупреждений в случае, если $value не установлено. Но в этом случае вы получите предупреждение следующей строки. Это более распространено и красивее ! чтобы отрицать логические значения в противном случае.
Но чтобы ответить на ваш вопрос, да, ваше предположение безопасно.
Обновление : в документации явно указано, что
empty () – это противоположность (boolean) var , за исключением того, что предупреждение не генерируется, когда переменная не задана.
(bool) $value равно (bool) $value !empty($value) и !$value равнозначно empty($value) . Для получения дополнительной информации см. Таблицы сравнения типов PHP .
eInteresting. Говоря это:
$value является обратной величиной empty($value) на мой взгляд, эквивалентно утверждению, что
(bool) $value равно !empty($value) В вашем примере код $value – это bool, и в этом случае утверждение истинно (и Майкл Крелин – ответ хакера, что ваше предположение безопасно, верно).
Но верно ли это утверждение? Учитывая документацию руководства empty() , я думаю, что это может быть так.