私はこれをよく見ました:$fp = fopen($filepath, "w") or die();
しかし、この「または」構文に関する実際のドキュメントを見つけることができないようです。それが何をするかは十分明らかですが、どこでも使用できますか?そして、その後にdie()
が続かなければなりませんか?次のようなものを使用できる場合にor
を使用する場合の注意事項はありますか
if (file_exists($filepath))
$fp = fopen($filepath,"r");
else
myErrMessage();
それはばかげた質問のように思えますが、これに関する厳格なルールを見つけることはできません。ありがとう。
これは論理演算子であり、任意の論理式で使用できます。
それを言ってみましょう:
$result = first() || second();
に評価されます:
if (first()) {
$result = true;
} elseif (second()) {
$result = true;
} else {
$result = false;
}
一方:
$result = first() or second();
に評価されます:
if ($result = first()) {
// nothing
} else {
second();
}
言い換えれば、あなたは考慮するかもしれません:
$result = first() || second();
$result = (first() || second());
そして:
$result = first() or second();
することが:
($result = first()) || second();
それはただの優先事項です。
これは、PHP前身から継承された、PHPが最初に返されたORに続く式をまったくスマートに評価しないという事実に基づいて、 true:
function a($ret){
echo "FOO";
return $ret;
}
function b($ret){
echo "BAR";
return $ret;
}
$result = (a(true) OR b(true));
FOO
のみを出力します。つまり、b()は実行されなかったということです。
or
は、単に boolean 比較を行います。
fopen()
によって返されるものは、そのようなブール値として扱うことができます。これは、失敗するとFALSE
を返すためです(失敗しない場合は異なる値を返します)。
失敗した場合、ステートメントは右側で評価されるため、関数die()
が呼び出されます。
基本的には、「最初のコマンドが失敗した場合、2番目のコマンドを実行する」という意味です。あなたの例では、PHPがファイルを開けない場合、スクリプト(die()
)を終了します。
PHPはCのような構文(||)に似ています
<?php
if( ($a==1 || $a==2) && ($b==3 || $b==4) && ($c==5 || $c==6) ) {
//do that something here.
}
?>
あなたが話している「Or」は、次のように単なるトリックです。
例:
$result = mysql_query('SELECT foo FROM bar', $db) or die('Query failed: ' . mysql_error($db));
Or die()トリックは、いくつかの理由で非常に悪い選択です。
画面に出力するかどうかを制御することはできません。開発環境でそれをしても構いませんが、実稼働環境ではそうではありません。
5。これにより、あらゆる種類のクリーンアップを実行できなくなります。スクリプトが突然終了するだけです。
参照:[ここにリンクの説明を入力してください] [1]
[1]: http://www.phpfreaks.com/blog/or-die-must-dieenter code here
使用するのと同じように使用できます||論理としてOR http://php.net/manual/en/language.operators.logical.php
||
として使用できますが、優先順位は同じではありません: http://www.php.net/manual/en/language.operators.precedence.php
演算子の優先順位は、2つの式をどの程度「厳密に」バインドするかを指定します。たとえば、式1 + 5 * 3では、乗算( "*")演算子は加算( "+")演算子よりも優先順位が高いため、答えは18ではなく16です。必要に応じて、括弧を使用して優先順位を強制することができます。たとえば、(1 + 5)* 3は18と評価されます。