ホームページ  >  記事  >  バックエンド開発  >  PHP オペレーターに関するいくつかの質問

PHP オペレーターに関するいくつかの質問

WBOY
WBOYオリジナル
2016-06-23 13:32:43915ブラウズ

マニュアルで見た内容は

&&	与	$x && $y	如果 $x 和 $y 都为 true,则返回 true。||	或	$x || $y	如果 $x 和 $y 至少有一个为 true,则返回 true。


しかし、有名なオープンソースプログラムを含む多くの php ファイルが逆バージョンを使用しているのをよく見かけるのはなぜでしょうか? ?

例えば、ある情報を削除するための条件判定コードは

は管理者 && 公開者ですか? という形式になります。マニュアルによると、これは情報を削除する条件は管理者と公開者の両方であることを意味します


何が起こっているのかよくわかりません。マニュアルに間違いがありますか?


ディスカッションへの返信 (解決策)

文脈から単語を取り出していないことをどうしてわかりますか?

マニュアルの論理演算子の使用法には何も問題はありません


については。あなたが挙げた例、あなたが言ったことは本当ですか?

どこで見たのかの例をあげて、みんなが見てもらえるようにコードを貼り付けてください

あなたはそれを見たので、誰もが見ることができるようにコードを貼り付けてください


たとえば、有名なオープンソース フォーラムの 1 つである discuz ファイル

if(!defined('IN_DISCUZ') || !defined('IN_ADMINCP')) {	exit('Access Denied');}


は明らかに、それが discuz 内に存在する必要があることを意味します。実行する管理者管理ページ。
信じられない場合は、discuz で関連する php ファイルを参照してください。驚くべきことに、


PHP にはカスタム演算子の機能がありません

逆に使用するべきではありません。例としては、2 つのフォームを判定したい場合です。

if(empty($_POST['a']) || empty($_POST['b'])){


この方法でのみ 2 つのフォームが必須となり、両方のフォームを公開することはできません
PHP マニュアルの

if(empty($_POST['a']) && empty($_POST['b'])){

を使用してください。 1つの項目を入力するだけで公開できます
個人テスト!

申し訳ありませんが、上に括弧がありません。笑、皆さんは意味を理解しています

別の例として、2 つのフォームが記入されているかどうかを判断したいとします。

if(empty($_POST['a']) || empty($_POST['b'])){


このように、2 つのフォームはは必須であり、両方のフォームを公開することはできません

if(empty($_POST['a']) && empty($_POST['b'])){
を使用します
php マニュアルに 1 つの項目を入力するだけで公開できます
自分でテストしました!


以下のコードをすべて書いていないのですが、それが逆になっているかどうかをどうやって知ることができるでしょうか?
それに、原作者の考えがこのようなものではなかったとどうして確信できるのでしょうか?


if(empty($_POST['a']) || empty($_POST['b']))
は、$_POST['a'] と $_POST['b のいずれかが存在する限り) を意味します']が空(もちろん両方空であることも含む)で式が成立
if(empty($_POST['a']) && empty($_POST['b']))

$_POSTがあることを表現[' a'] と $_POST['b'] はどちらも空であり、式は有効です

「両方とも空である」という式がありますが、明らかに 2 つは異なります
一致する方を選択する必要がありますビジネス ニーズ 必須の式





別の例は、2 つのフォームが記入されているかどうかを判断したいです

if(empty($_POST['a']) || empty($_POST['b'])){


このように、両方のフォームが必須であり、両方のフォームを公開することはできません

if(empty($_POST['a']) && empty($_POST['b'])){
を使用します
PHPマニュアル内 1項目を入力するだけで公開準備完了
自分でテスト済み!


以下のコードをすべて書いていないのですが、それが逆になっているかどうかはどうやってわかるのでしょうか?
それに、原作者の考えがこのようなものではなかったとどうして断言できるのでしょうか?



私が言いたいのは、
if(empty($_POST['a'])) || empty($_POST['b'])){    echo "对不起 表格填写不全";}else{   echo "发布成功";}

このタイプのコードは、discuz ではフォーム a およびフォーム b として考慮され、公開する前に完全に入力する必要があります

一方で、
if(empty($_POST['a'])) && empty($_POST['b'])){    echo "对不起 表格填写不全";}else{   echo "发布成功";}

は入力されたものとみなされます。少なくとも1日以内には公開準備完了です

私も不思議に思ったので相談してみました。 。 。 。 。 。 。

あなた自身の論理的な質問: c=a&&b; は !a または !b =c と等しいと思いますか?

if(!define('IN_DISCUZ') || !define('IN_ADMINCP')) {
exit('Access Denied') }


は、いずれかが満たされない限り終了することを意味し、判断の幅は広いほうがいいです。 The table is square -> The table is a square table

や、 or が正方形ではない、またはテーブルではなく正方形のテーブルを満たしていない、などの見方もできます。個人的には判断に使った方が効率的だと思います。

これは、a が空、または b が空の場合、フォームが不完全であることを意味します
if(empty($_POST['a'])) || empty($_POST['b'])){
echo "申し訳ありませんが、フォームが不完全です";
}else{
echo "正常に公開されました";
}

これは、a と b が同時に空の場合にのみフォームが不完全であることを意味します
if(empty($_POST['a'] )) && empty( $_POST['b'])){
echo "申し訳ありません、フォームが不完全です";
}else{
echo "正常に公開されました";

論理的には、この 2 つは異なります。投稿者がなぜ問題があると考えるのか理解できません。これらは要求に従って行われます。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。