Проверьте, существует ли Variable и === true
Я хочу проверить, если:
- поле в массиве isset
- поле === true
Можно ли проверить это с помощью одного оператора if
?
Проверка того, что ===
выполнит трюк, но будет выведено уведомление PHP. Я действительно должен проверить, установлено ли поле, а затем, если оно верно?
Ответы
Ответ 1
Если вы хотите его в одном выражении :
if (isset($var) && ($var === true)) { ... }
Если вы хотите его в одном состоянии:
Ну, вы можете игнорировать уведомление (ака удалить его с экрана с помощью функции error_reporting()
).
Или вы могли бы подавить его со злом @
character:
if (@$var === true) { ... }
Это решение НЕ РЕКОМЕНДУЕТСЯ
Ответ 2
Я думаю, что это должно сделать трюк...
if( !empty( $arr['field'] ) && $arr['field'] === true ){
do_something();
}
Ответ 3
Альтернатива, просто для удовольствия
echo isItSetAndTrue('foo', array('foo' => true))."<br />\n";
echo isItSetAndTrue('foo', array('foo' => 'hello'))."<br />\n";
echo isItSetAndTrue('foo', array('bar' => true))."<br />\n";
function isItSetAndTrue($field = '', $a = array()) {
return isset($a[$field]) ? $a[$field] === true ? 'it is set and has a true value':'it is set but not true':'does not exist';
}
результаты:
it is set and has a true value
it is set but not true
does not exist
Альтернативный синтаксис:
$field = 'foo';
$array = array(
'foo' => true,
'bar' => true,
'hello' => 'world',
);
if(isItSetAndTrue($field, $array)) {
echo "Array index: ".$field." is set and has a true value <br />\n";
}
function isItSetAndTrue($field = '', $a = array()) {
return isset($a[$field]) ? $a[$field] === true ? true:false:false;
}
Результаты:
Array index: foo is set and has a true value