それは次のように書かれるべきです...
dd($user === "Admin" || $user === "Superuser");
... 代わりは。個別に確認する必要がある 2 つの個別の条件があります。
現在の状況については、それは... おかしいです。PHPの||
演算子は JavaScript のようには機能しません (truthy
値に評価される場合は最初のオペランドを返すか、型を変更せずに 2 番目のオペランドを返します)。
しかし、これは PHP であり、ここでは||
操作の結果は常にboolean
値 ( または のいずれかtrue
)false
です。PHPtrue
では 2 つの文字列値 (falsy
空の文字列と'0'
. の最初のオペランド'Admin' || 'Superuser'
はどちらでもないため、この式は と評価されtrue
ます。
だからそれは...
dd($user == true);
繰り返しますが、適切な比較演算子を使用===
すると、ここで違いに気付くはずです。しかし、それ==
は であるため、実際に比較する前にオペランドの型を変換します。
型強制の規則 (docpage で非常にうまく説明されています) により、比較の一方の値が の場合、もう一方の値boolean
も常にに変換されboolean
ます。またはで$user
はないので、にも変換されます。''
'0'
true
したがって、最終的には次のようになります。
dd(true === true);
結果はどうですか?)