ここから本文です

PHPにおいて $abc = "a" $efg = "b" if(($abc == "a") and (($efg = "b") o...

kab********さん

2019/3/2110:19:02

PHPにおいて

$abc = "a"
$efg = "b"

if(($abc == "a") and (($efg = "b") or ($efg = "C"))){

echo 'OK';
}

上記のロジックで、if文の中の処理が行われないのは、なぜでしょう?

PHPのあるコードで、これと同じロジックが前まで正常に動いておりました。
大幅に処理の流れを手直しする必要があったため、手直ししたら上記のif文が
まったく働かなくなりました。

直前でそれぞれの変数 $abc,$efg の中身を確認して
正しく変数 $abc の中身は "a" 変数 $efg の中身は "b","C" が入っています。

動かしてる環境はApacheでxxx.phpというファイルをブラウザから閲覧という形です。

閲覧数:
12
回答数:
2

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

shi********さん

2019/3/2113:53:39

>if文の中の処理が行われないのは、なぜでしょう?

手元のxampp環境では(というかほぼどういう環境でも)提示されたソースであれば、キチンと実行されるハズです。

if(($abc == "a") and (($efg = "b") or ($efg = "C"))) { echo 'OK'; }

であっても

if(($abc == "a") and (($efg == "b") or ($efg == "C"))) { echo 'OK'; }

であってもです。



>正しく変数 $abc の中身は "a" 変数 $efg の中身は
> "b","C" が入っています。

非可視のコードが混じっていたりはしませんか?var_dumpなどで文字列の長さが 1 であることを確認されていますか?

質問した人からのコメント

2019/3/21 22:21:02

すみません。 自己解決です。

正直、ホントにある程度完成してたロジックを・・・
その部分でだけでなく、ホントに全体を見直していました。
その後、その部分で分かり易いところでNGになっていたのでパニくりました。

けっきょく条件式のところでなく、その後の条件式に入った中で呼び出してる
ファンクションでNGとなっていて、それが原因でした。

わざわざ自身の環境にて試して頂いて、ありがとうござました。

ベストアンサー以外の回答

1〜1件/1件中

fxh********さん

2019/3/2110:29:46

($efg = "b") or ($efg = "C")
は常に同じ評価となる為
($efg == "b") or ($efg == "C")
の間違いですね。

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる