If else PHPステートメントで「AND/OR」をどのように使用しますか?それでしょうか:
1)AND
if ($status = 'clear' AND $pRent == 0) {
mysql_query("UPDATE rent
SET dNo = '$id',
status = 'clear',
colour = '#3C0'
WHERE rent.id = $id");
}
2)または
if ($status = 'clear' OR $pRent == 0) {
mysql_query("UPDATE rent
SET dNo = '$id',
status = 'clear',
colour = '#3C0'
WHERE rent.id = $id");
}
はい。答えはイエスです。
http://www.php.net/manual/en/language.operators.logical.php
ただし、次の2つです。
and
とor
ではなく&&
と||
を好みますが、同じように機能します(優先的に安全です)。$status = 'clear'
はおそらく$status == 'clear'
でなければなりません。 =
は割り当て、==
は比較です。ここでの回答には、冗談や誤解を招くコメント、部分的に不正確な情報も含まれています。私はそれらを改善したいと思います:
最初に、いくつかの人が指摘したように、質問に関連するコードにバグがあります:
if ($status = 'clear' AND $pRent == 0)
(最初の部分の==
の代わりに=
に注意してください):
if ($status == 'clear' AND $pRent == 0)
このこの場合は機能的に同等です
if ($status == 'clear' && $pRent == 0)
Second、これらの演算子(and or && ||
)は短絡演算子であることに注意してください。つまり、最初の式から回答を確実に決定できる場合、2番目の式は評価されません。繰り返しますが、これは上記のデバッグ行には関係ありませんが、これらの演算子を割り当てと組み合わせる場合は非常に重要です。
3番目、and or
と&& ||
の本当の違いは、 演算子の優先順位 です。特に重要なのは、&& ||
の優先順位が代入演算子(= += -= *= **= /= .= %= &= |= ^= <<= >>=
)より高いことと、and or
の優先順位が代入演算子より低いことです。したがって、割り当てと論理評価の使用を組み合わせたステートメントでは、どちらを選択するかが重要になります。
PHPの論理演算子のページ からの変更例::
$e = false || true;
$e
は||
よりも演算子の優先順位が高いため、true
に評価され、その値を=
に割り当てます。したがって、基本的には次のように評価されます。
$e = (false || true);
しかしながら
$e = false or true;
$e
はfalse
よりも演算子の優先順位が高く、基本的に次のように評価されるため、or
を=
に割り当てます(そしてtrue
操作を実行してor
を評価します)。
($e = false) or true;
このあいまいさが存在するという事実により、多くのプログラマーは常に&& ||
を使用するようになり、Cなどの言語で期待されるようにすべてが明確に機能します。最初に論理演算、次に割り当て。
Perlのようないくつかの言語は、このような構成を次のような形式で頻繁に使用します。
$connection = database_connect($parameters) or die("Unable to connect to DB.");
これは、理論的にはデータベース接続を$connection
に割り当てるか、失敗した場合(そして、この場合、関数はfalse
にevaluesするものを返すと仮定します)、エラーメッセージでスクリプトを終了します。短絡のため、データベース接続が成功した場合、die()
は評価されません。
この構成を可能にする一部の言語では、条件付き/論理ステートメント(Pythonなど)での割り当てを禁止して、逆にあいまいさを排除しています。
PHPは両方を許可するようになったため、2つのオプションについて一度学習してから、好きなようにコーディングするだけで済みますが、何らかの形で一貫性が保たれることを願っています。
疑わしいときはいつでも、余分な括弧を追加するだけで、すべての曖昧さがなくなります。これらは常に同じです。
$e = (false || true);
$e = (false or true);
そのような知識をすべて備えて、コードを読みやすくするためにand or
を使用することを好みます。割り当てと論理評価を組み合わせないというルールがあります。しかし、その時点ではそれは単なる好みであり、一貫性はここでどちらを選ぶかよりも重要です。
ここには2つの問題があります。
比較には==
を使用します。割り当て用の=
を使用しました。
「and」には&&
を、「or」には||
を使用します。 and
およびor
は機能しますが、型破りです。
ANDは&&
であり、ORはCのように||
です。
AND
およびOR
は、JavaScriptや他のCスタイルの構文言語のように、&&
および||
の単なる構文上の砂糖です。
It AND
およびOR
の優先順位が低いように見えます 同等のCスタイルよりも。
aNDを使用します
if ($status = 'clear' && $pRent == 0) {
mysql_query("UPDATE rent SET dNo = '$id', status = 'clear', colour = '#3C0' WHERE rent.id = $id");
}
ORを使用します
if ($status = 'clear' || $pRent == 0) {
mysql_query("UPDATE rent SET dNo = '$id', status = 'clear', colour = '#3C0' WHERE rent.id = $id");
}
ここで少し混乱していると思います。 :)しかし、誰も持っていないようです..
このシナリオで使用するものを尋ねていますか?はいの場合そして正解です。
演算子がどのように機能しているかについて質問している場合、
PHPでは、AND、&&とOR、の両方が同じように機能します。プログラミングの初心者で、phpが最初の言語の1つである場合、ANDとORを使用することをお勧めします。これは、読みやすくするために読みやすさと混乱を減らすためです。ただし、すでに他の言語に精通している場合は、&&および||を既に理解している可能性があります。演算子。
<?php
$val1 = Rand(1,4);
$val2=Rand(1,4);
if ($pars[$last0] == "reviews" && $pars[$last] > 0) {
echo widget("Bootstrap Theme - Member Profile - Read Review",'',$w[website_id],$w);
} else { ?>
<div class="w100">
<div style="background:transparent!important;" class="w100 well" id="postreview">
<?php
$_GET[user_id] = $user[user_id];
$_GET[member_id] = $_COOKIE[userid];
$_GET[subaction] = "savereview";
$_GET[ip] = $_SERVER[REMOTE_ADDR];
$_GET[httpr] = $_ENV[requesturl];
echo form("member_review","",$w[website_id],$w);?>
</div></div>
iveは 'else'を '&&'に置き換えたため、両方が配置されます... argh