Проверьте, существует ли 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