17

次のことを確認したい:

  • 配列 isset 内のフィールド
  • フィールド === true

ifこれを1つのステートメントで確認することは可能ですか?

トリックを実行するかどうかを確認===しますが、PHP 通知がスローされます。フィールドが設定されているかどうかを確認し、それが true であるかどうかを本当に確認する必要がありますか?

4

4 に答える 4

31

単一のステートメントでそれが必要な場合:

if (isset($var) && ($var === true)) { ... }

単一の状態でそれを望む場合:

さて、あなたは通知を無視することができます(別名、error_reporting()関数を使用して表示からそれを削除します)。

@または、邪悪なキャラクターでそれを抑制することができます:

if (@$var === true) { ... }

このソリューションは推奨されません

于 2011-10-26T20:03:21.397 に答える
2

私はこれがトリックをするべきだと思います...

if( !empty( $arr['field'] ) && $arr['field'] === true ){ 
    do_something(); 
}
于 2011-10-26T20:02:27.080 に答える
1

オルタナティブ、楽しみのためだけに

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
于 2011-10-26T20:21:32.437 に答える