В PHP: «if ($ value)« обратный »if (empty ($ value))?

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