web-dev-qa-db-ja.com

変数の前に感嘆符-説明が必要

私はかなり長い間PHPで作業してきましたが、これは常に私にとって謎でした。変数の前に感嘆符(負の符号)を正しく使用していました。

_!$var_は何を示していますか? var false、空、設定されていないなどですか?

これが私が学ぶ必要があるいくつかの例です...

例1:

_$string = 'hello';
$hello = (!empty($string)) ? $string : '';

if (!$hello)
{
    die('Variable hello is empty');
}
_

この例は有効ですか? _$string_が空の場合、ifステートメントは実際に機能しますか?

例2:

_$int = 5;
$count = (!empty($int)) ? $int : 0;

// Note the positive check here
if ($count)
{
   die('Variable count was not empty');
}
_

この例は有効でしょうか?

上記の例を使用することはありません。これらのif ($var)をブール値のみを持つ変数に制限します。 if ($var)ステートメントの使用を広げることができるように、これらの例が有効かどうかを知る必要があります。彼らは本当にきれいに見えます。

ありがとう。

13
aborted

if(! $a)if($a == false)と同じです。また、==演算子を使用する場合は、型変換が行われることを考慮に入れる必要があります。
詳細については、「== "セクションとの大まかな比較 ここ 」を参照してください。そこから、文字列「0」と「」はFALSEに等しくなります("0"==falseはTRUEであり、""==falseもTRUEです)。

投稿例について:
例1
[。

例2
それが動作します

18
bhovhannes

!否定します。 trueはfalseになり、falseと評価されたものはすべてtrueになります。

PHPを書いていて、すべての演算子を心から知っているわけではない場合..心から理解するまで、1行のコードを記述しないでください。

http://php.net/manual/en/language.operators.php

これらは絶対的な基本です。

2
Evert

ブールテスターです。空または偽。

0
William The Dev

これはnotブール演算子です。詳細については、 PHP手動 を参照してください。

0
mensi