При генерации тега 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()
, я думаю, что это может быть так.