• ベストアンサー

==""|| って?

PHP初心者です。 初めてPHPで問い合わせページを作成しています。 サンプルをダウンロードしてきて、いろいろ変更しながら作ろうと思っているのですが、サンプルの中に、 if($_SESSION['name']==""||$_SESSION['mail_ad']==""||$_SESSION['subject']==""||$_SESSION['message']==""||!ereg($cp,$_SESSION['mail_ad'])){ $err=false; }else{ $err=true; } という文があります。 どーやら、入力の漏れがないかをチェックしているようなのですが、この部分の解説が無いため、自分なりにカスタマイズしようと思ってもなかなか進みません。 ==""||にはなんの意味があるのでしょうか? 簡単でけっこうですので、教えていただけませんか?

質問者が選んだベストアンサー

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.5

No.2 & 4のham_kamoです。 > 今回自分が作っているものは、入力項目が結構多く、20項目くらいあるのですが、 > サンプルのように$_SESSION['xxxx']==""||$_SESSION['yyy']==""||のように > 20個くらい続けても問題ありませんか? 続けても文法的には問題はない(はず?)ですが、ずらずらと横に並べるのと読みにくいソースになるので、 if ( $_SESSION['xxxx'] == ""  || $_SESSION['yyyy'] == "" などのように一行ずつにして見やすくするか、あるいは、チェックする引数の配列を作っておき、foreachでチェックする、などの方法があります。これならチェックする項目が増えても簡単に対応できます。ただしメールアドレスが正しいか正規表現で、などは別処理になりますが。 一応、例を下に書いておきます。 $item = array('name','mail_ad','subject','message'); $err = true; if (!ereg($cp,$_SESSION['mail_ad']) {  $err = false; } else {  foreach ($item as $value) {   if ($_SESSION[$value] == "") {    $err = false;    break;   }  } } なんとなく、$errのtrueとfalseが逆のような感じもしますが、この変数がプログラムの中でどのように使われているのがわからないので、質問文にしたがった記述をしています。

plqtan
質問者

お礼

ありがとうございます。 配列で・・・って考え方もできるんですね。 わかりやすい解説ありがとうございました。

その他の回答 (4)

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.4

No.2です。ちょっと訂正。 ==""は、if ($A == "") というように、変数が空文字列でなければ、という意味の等式です。 →「変数が空文字列であれば」の誤りでした。失礼しました。

plqtan
質問者

お礼

ham_kamoさん。 わかりやすい解説ありがとうございました。 今回自分が作っているものは、入力項目が結構多く、20項目くらいあるのですが、サンプルのように$_SESSION['xxxx']==""||$_SESSION['yyy']==""||のように20個くらい続けても問題ありませんか? なんとなくですが、$_SESSION['xxxx']にPOSTで受け取りSESSIONに格納したものをズラズラと並べてみたのですが、どうもこの部分で処理がとまってしまうような感じで困っていました。 意味がわかったので、もう一度挑戦してみます。 が、もし注意点などがあればお教えいただければ幸いです。 ありがとうございました。

  • ptakeda
  • ベストアンサー率53% (7/13)
回答No.3

すでに、ずばりの回答がついているので、参考までに、 ||は、演算子です。 参考URLつけます。

参考URL:
http://www.scollabo.com/banban/php/php_06.html
plqtan
質問者

お礼

ptakedaさん。 参考のURLありがとうございます。 ほんとに参考になりました。 ==""||で検索とかしていて、何も出てこなくて(当たり前ですよね・・)困っていました。 ありがとうございました。

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.2

||は論理式でのORを意味します。 ==""は、if ($A == "") というように、変数が空文字列でなければ、という意味の等式です。 if($_SESSION['name']==""||$_SESSION['mail_ad']==""||$_SESSION['subject']==""||$_SESSION['message']==""||!ereg($cp,$_SESSION['mail_ad'])){ は、分解して書くと、 if ( $_SESSION['name']==""|| $_SESSION['mail_ad']==""|| $_SESSION['subject']==""|| $_SESSION['message']==""|| !ereg($cp,$_SESSION['mail_ad']) ){ となり、日本語に訳すと、 $_SESSION['name']が空文字列の場合、または $_SESSION['mail_ad']が空文字列の場合、または $_SESSION['subject']が空文字列の場合、または $_SESSION['message']が空文字列の場合、または $_SESSION['mail_ad'])が正規表現$cpにマッチしなかったら、 という意味になります。 要は、フォームで入力されてPHPに渡ってきたパラメータをチェックして、必須事項が記入ないものがあるか、あるいはメールアドレスが正しい書式になっていない場合は、というif文だと思います。

noname#26650
noname#26650
回答No.1

> ==""|| == : 左側と右側に書いてある内容が等しいかどうか、を表わす演算子 "" : 「何も入っていない」ことを表わす || : 左側と右側に書いてある式の少なくとも一方が成立すれば真、を表わす演算子 【例】 if ($aaa == "1" || $bbb == "x") というif文は、「$aaaが"1"に等しいか、または、$bbbが"x"に等しければ、真」 という意味

plqtan
質問者

お礼

miraiyaさん。 ありがとうございます。 なるほど、意味あるものが3つつながっていたのですね。 わかりやすい解説ありがとうございました。