• ベストアンサー

if文が正しく動かないです。

ソースと結果を載せます。 ~ソース~ 簡単に説明しますと、ポストされた文字列を","で区切って、住所3に”以下に掲載がない場合”が入っているかで表示を分岐させています。 <?php session_cache_limiter("none"); session_start(); $a=$_POST["SelectAdd"]; echo $a."<br>"; $b=explode(",",$a); $_SESSION["yuubinbangou1"]=substr($b[0],0,3); $_SESSION["yuubinbangou2"]=substr($b[0],3,4); $_SESSION["juusho1"]=$b[1]; $_SESSION["juusho2"]=$b[2]; if(strpos($b[3],"以下に掲載がない場合")!=="false"){ $_SESSION["juusho3"]=""; } if(strpos($b[3],"以下に掲載がない場合")==="false"){ $_SESSION["juusho3"]=$b[3]; } echo (1==1)."<br>"; echo (strpos($b[3],"以下に掲載がない場合")!=="false")."<br>"; echo (strpos($b[3],"以下に掲載がない場合")==="false")."<br>"; echo "郵便番号1は".$_SESSION["yuubinbangou1"]."<br>"; echo "郵便番号2は".$_SESSION["yuubinbangou2"]."<br>"; echo "住所1は".$_SESSION["juusho1"]."<br>"; echo "住所2は".$_SESSION["juusho2"]."<br>"; echo "住所3は".$_SESSION["juusho3"]."<br>"; echo "ビー3は".$b[3]."<br>"; ?> ~結果1~ 2900000 ,千葉県 ,市原市 ,以下に掲載がない場合 1 1 郵便番号1は290 郵便番号2は0000 住所1は千葉県 住所2は市原市 住所3は ビー3は以下に掲載がない場合 ~結果2~ 2900252 ,千葉県 ,市原市 ,相川 1 1 郵便番号1は290 郵便番号2は0252 住所1は千葉県 住所2は市原市 住所3は ビー3は相川 …以上のようになるのですが、結果2では、『住所3は相川』と表示されるはずですよね。 なぜ、正しく表示されないのでしょうか? ご回答をお願い致します。

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

  • ベストアンサー
回答No.1

>…以上のようになるのですが、 ふむ。 >結果2では、『住所3は相川』と表示されるはずですよね。 いいえ。 >なぜ、正しく表示されないのでしょうか? strpos関数の戻り値は真偽値のtrueやfalseであって、文字列の"true"や"false"ではないのを質問者が勘違いしているからです。 1は出力されない。2は出力されるけど。 http://ideone.com/5hNn9 #そう書けばいい、じゃなくてちゃんと理解して書くようにしないと危ないからね?

tikutakutiku
質問者

お礼

ありがとうございました!! 上手く出来ました。 アドバイスありがとうございます。おっしゃるとおりです、これからはちゃんと理解して書くようにします!! ありがとうございます!!

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • vbsのif文で複数条件の判定

    例えば以下である場合、 WScript.echo AAA WScript.echo BBB vbsを実行すると "?"が表示されます。 "OK"が表示されない原因として考えられる事はありますでしょうか If AAA = false Then If BBB = false Then WScript.echo "OK" else WScript.echo "NG" End If else WScript.echo "?" End If

  • PHPの入力フォームの確認画面の構文エラー

    <?php session_start(); require_once "define.php"; echo "<b>質問内容</b><br>"; echo "タイトル : ".htmlspecialchars($_SESSION[TITLE], ENT_QUOTES)."<br>"; echo "URL : ".htmlspecialchars($_SESSION[URL], ENT_QUOTES)."<br>"; echo "メール : ".htmlspecialchars($_SESSION[MAIL], ENT_QUOTES)."<br>"; echo "<br>質問ありがとうございました。<br><br>"; echo "<a href=\"./index.php\">入力フォームに戻る</a>"; ?> こういう感じのPHPの構文を書いたんですがなぜか echoで表示してあるタイトル、URL、メールのところが ちゃんと表示されません define.phpは間違いなくちゃんとファイルとして書いてあります どこか間違っているところがあるのでしょうか? 原因がわかりません、一日中悩んだけど 答えがわかりません、どなたかよろしくお願いします。

    • 締切済み
    • PHP
  • aspファイル内でのIF文埋め込み

    現在とあるホームページの編集をするのに.aspファイルをいじっています。 ホームページ上に「氏名」と「社員番号5桁」を入れるテキストボックスがあり、それを以下のように表示させています。 1.氏名:○○ (社員番号:○○) <tr height="25"> <td width='25' align='left' valign='top'>1.</td> <td nowrap width='120' align='left' valign='top'>氏名:</td> <td width='400'  align='left' valign='top'><b><%= session.contents("name") %></b>   (社員番号:<b><%= session.contents("bangou") %></b>)</td> </tr> この時「社員番号」テキストボックスに入力があれば(社員番号:○○)の部分を表示させ、 入力がない場合(社員番号:○○)の表示そのものをしない設定にしたいのですが、aspやhtmlに関して未経験で勉強での知識だけでは追いついていないため、<%>を使った埋め込みや、構文が出来ていない為困っております。なのでお力添えして頂けると有り難いです。 <tr height="25"> <td width='25' align='left' valign='top'>1.</td> <td nowrap width='120' align='left' valign='top'>氏名:</td> <td width='400'  align='left' valign='top'><b><%= session.contents("name") %></b> <% if len("HosCode") = 5 then %>   (社員番号:<b><%= session.contents("bangou") %></b>)</td> <% end if %> </tr> ↑私自身が考えてみた一例(5桁を入れても「社員番号:○○が表示されない」)

  • 「404判定のstrpos」の演算子が分からないの

    「404判定のstrpos」の演算子の意味が分からないので、教えてください。 ▽404 Not Found時の対処 | PHPのQ&amp;A【OKWave】   http://okwave.jp/qa/q4783971.html に掲載されていた下記を試したら、期待した動作になったのですが、 if (strpos($hdr[0],'404')!==false){  echo 'Not Found'; } else { しかし、 ▽PHP: strpos - Manual   http://php.net/manual/ja/function.strpos.php を参考に、「===演算子」へ変更したら、 if (strpos($hdr[0],'404')===false){  echo 'Not Found'; } else { 正常なURL(200)も、全てNot Foundになってしまいます。 ちなみに、 if (strpos($hdr[0],'404')==true){ だったら、期待通りの動作になりますが、 if (strpos($hdr[0],'404')===true){ だと、何が来ても同じ結果になります。 なんででしょうか? strpos関数の返り値を調べる際 ===演算子 を 利用しなくても良いのでしょうか?

    • ベストアンサー
    • PHP
  • 0をstringにできません。

    PHPで数字の0をstringとして扱えないようですが これは仕様でしょうか? ---------------------- echo("<br>数値として比較:"); $in=0; echo('<br>0の場合値は'); if($in==FALSE){echo('FALSE');} $in=1; echo('<br>1の場合値は'); if($in==TRUE){echo('TRUE');} echo("<br><br>文字列として比較:"); $in='0'; settype($in,"string"); echo('<br>"0"の場合値は'); if($in==FALSE){echo('FALSE');} $in='1'; settype($in,"string"); echo('<br>"1"の場合値は'); if($in==TRUE){echo('TRUE');} ---------------------- 上記コードを実行してみると ---------------------- 数値として比較: 0の場合値はFALSE 1の場合値はTRUE 文字列として比較: "0"の場合値はFALSE "1"の場合値はTRUE ---------------------- となって0がstringとして扱われてるのなら 文字列として比較した場合0でも1でもTRUEに なると思うのですが・・・

    • ベストアンサー
    • PHP
  • (初学者)PHPの基本的文法の質問です。

    以下の「<?php $_SESSION["name"] ?>」部分が反映されないのですが どうしてでしょうか? ------------------------------------- <?php session_start(); $_SESSION["name"] = "山田花子"; $_SESSION["ken"] = "北海道"; ?> <html> <body> 私の名前は<?php $_SESSION["name"] ?>です。<br> 出身地は<?php $_SESSION["ken"] ?>です。<br> </body> </html> ------------------------------------- いくつかの正しい書き方があるようで 「<?= $_SESSION["name"] ?>」ではうまく反映されます。 「<?php ?>」の書き方が一番一般的ということで 使ってみたのですが普通に反映されない原因が分かりません この場合はやはり「echo」などを使って <?php echo $_SESSION['name'] ?>としなければ ならないのでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 【PHP】UA判別によるCSSの振り分け

    PHPはドのつく初心者です。 現在PHPでCSSの振り分けに挑戦しています。 私が持っている機種はauガラケーとAndroidだけですので、iPhoneなどの挙動確認はFireFoxのUA変更アドオン「User Agent Switcher」で行っております。 auガラケー実機で以下のPHPは正しく振り分けられていたのですが、FireFoxのアドオンにてDoCoMoのUAでアクセスした場合に、ガラケーのCSSに加えてPC(その他)のCSSが読みこまれてしまいました。 <link rel="stylesheet" type="text/css" href="garak.css" media="all"> <link rel="stylesheet" type="text/css" href="design.css" media="all"> ↑このような感じです。 auのUAアクセスでも同様の症状が発生していますが、こちらはガラケー本体で動作確認できているので大丈夫だとは思います。もしかしたらちゃんと実機で読みこめば行けるのかな?と思いつつ、不安が残っております。 DoCoMo実機は家にないので確認の仕様がありません。 以下のPHPでDoCoMo機種の動作は正しくいくのでしょうか? <?php $ua = $_SERVER['HTTP_USER_AGENT']; if ((strpos($ua,'DoCoMo') !== false) || (strpos($ua,'KDDI') !== false) || (strpos($ua,'UP.Browser') !== false) || (strpos($ua,'J-PHONE') !== false) || (strpos($ua,'Vodafone') !== false) || (strpos($ua,'SoftBank') !== false) ) { echo '<link rel="stylesheet" type="text/css" href="garak.css" media="all">'; } if ((strpos($ua,'iPhone') !== false) || (strpos($ua,'iPod') !== false) || (strpos($ua,'Android') !== false) ) { echo '<link rel="stylesheet" type="text/css" href="smart.css" media="all">'; } else { echo '<link rel="stylesheet" type="text/css" href="design.css" media="all">'; } ?>

  • 条件式の変数化

    phpにて、いくつかのキーワードを変数で設定しておき、 文中にそのキーワードがあるかどうか判定し、そのキーワードによって処理を変えていくというプログラムを作成しています。 プログラムは、strposによるキーワード判定と、switchによる処理を組み合わせたものです。 //【キーワードの設定】 //「暑い」 $atui = "暑い"; $atui2 = "あつい"; $atui3 = "あっつい"; $atui4 = "あつーい"; //「寒い」 $samui = "寒い"; $samui2 = "さむい"; $samui3 = "さっむーい"; $samui4 = "さむーい"; //【判定対象の文章】 $word = "外は暑いなあ" switch (true) { //【「暑い」の場合の処理】 case (strpos($word, $atui1) !== false) || (strpos($word, $atui2) !== false) || (strpos($word, $atui3) !== false) || (strpos($word, $atui4) !== false) || : echo "今日は暑いですね"; break; //【「寒い」の場合の処理】 case (strpos($word, $samui1) !== false) || (strpos($word, $samui2) !== false) || (strpos($word, $samui3) !== false) || (strpos($word, $samui4) !== false) || : echo "今日は寒いですね"; break; } キーワード認識に幅を持たせたいので変数を何個も設定しています。 上記コードのように『暑い』だったら、「あつい」「あっつい」「あつーい」「アツイ」などをそれぞれ個別に変数化し いずれかが含まれていたら「暑い」の処理を実行するという感じです。 キーワードが少ないうちはいいんですが、多くなってくると 個別に設定している変数が膨大になってきて収集がつかなくなってきている状態です。 条件式も、複数のキーワードを組み合わせた判定を書こうとすると、ものすごい長さになってしまいますし… $atui = "暑い" or "あつい" or "あっつい" or "あつーい" or "アツイ"; という感じに、うまく一つのキーワードで一つの変数にまとめることはできないでしょうか? (ちなみに、上記のように書いて条件式に使ってみたのですがうまくいきませんでした…) なにか良い方法がありましたらご助力頂けると幸いです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 文字列の一部比較について

    エクセルで地区コードと住所の比較をしたいのですが =IF(EXACT(B2,C2),"同じ","違う") 例の様なセルB2とセルC2(一部)の比較はできるのでしょうか? 教えてください。 例     B       C             D  1  地区コード   住所 2   市原市    千葉県市原市八幡     同じ 3   中央区    千葉県千葉市中央区    同じ 4   東京都    東京都墨田区       同じ 5   市原市    千葉県千葉市稲毛区    違う

  • 京都の住所の読みを教えて下さい!

    郵便番号検索サイトなどでは詳細な読みまで表示されますが、「以下に掲載がない場合の郵便番号」でひと括りにされる住所だと読みが出ないのです... 読みたい住所は、 「京都府京都市中京区二条通両替町東入東玉屋町」 です。 中京区(ナカギョウク)までは読めます。 ものすごく急いでいますのでよろしくお願いします。