2010-12-01 7 views
0

はこの二回今、問題が何であるかを知らない持っていた場合if文、私はOR属性PHP:私は最初のかどうかチェックしたいORの問題

if((checkBlock($showU['id'], $USER, 'Wall') != 1) || (checkBlock($showU['id'], $USER, 'Wall', 1) == 1)) { 

で、この通常を持っているのヘルプcheckBlockが!= 1、またはcheckBlockが== 1の場合OR

最初にcheckBlockをtrueに設定すると、ユーザーをブロックしてユーザーが私にアクセスしようとした場合。

ユーザーをブロックして私が彼にアクセスしようとすると、2番目のことが当てはまります。

最初ifstatementは上記のコードではなく、if文で動作します(私はブロックされ、彼を訪問している場合)。..

しかし、二作品、私は最初の文を削除..しかし、私はしたい場合両方をチェックする。

どのように私はそれらをチェックすることができますか?私はORを試みましたが、問題には影響しませんでした。

+0

さらに詳しい情報を提供してください:あなたのコード内の変数は、どのようなものですか? – Jon

答えて

0

あなたがそれらを両方をチェックしたい場合は、それがあるべきであり、そして最初のが原因で短絡的なブール評価の真であるとき(&&)、ないOR

1

PHPは、第2のチェックをスキップしています。つまり、あなたが(A || B)を持ち、Aが真であれば、あなたの条件がすでに成立しているのでBをチェックする必要はありません。両方の条件を確認したい場合は、ORを使用する必要はありません。

+1

最初の語句がfalseの場合は動作しません。条件が(aまたはaではない)と思われるのでOPの問題を推測するのはかなり難しいが、もちろんこれは決して偽ではない。 –

+0

@キャプテンキリンキャプテンがいない、 "not"の外見に変数が1つあります。違いを参照してください。 – Karem

+0

"両方をチェックしたい"というのは、本当にORが必要な場合は意味がありません。 「両方をチェックしたい」とはどういう意味ですか?おそらくXORが欲しいですか?つまり、AかBのどちらかではなく、両方ではありませんか? –

1

ANDやORのどちらを使用しても、同じ値をチェックしても、開始条件は意味をなさない(1!= 1 OR 1 == 1のように解釈されます。センス)。値とロジックを確認してください。

+0

再度機能をお読みください。 1つは最後に(、1)が含まれています他の何も含まれていません..彼らは異なる – Karem

関連する問題