• ベストアンサー

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