- ベストアンサー
PHPでの分岐
お世話になっています。 現在PHPにてポイントサイトの製作をしているのですがどうも一箇所正しく動作がしない場所がありご質問させて頂きました。 CSVでデータをアップし「承認」「非承認」でデータを反映させたいのですが・・・ ※$aspInfo['para_status']・・・CSVで成果ステータスの行を指定 ※aspInfo['status_ok']・・・"承認"する条件(ここでは"承認"という文字列) ※$getStatus・・・CSVでのステータス //成果ステータス $getStatus = $recArray[ $aspInfo['para_status'] - 1 ]; //print $getStatus; if( $aspInfo['status_ok'] == $getStatus){ $getStatus = "2"; }else{ $getStatus = "9"; } 予め決めておいた「$aspInfo['status_ok']」の値とCSVの中に含まれる「$getStatus」が一致した場合$getStatus = "2"、 一致しない場合$getStatus = "9"としてデータを反映させたいのですが・・・ 実際$aspInfo['status_ok']を"承認"という文字列で指定して"否認"というCSVステータスをアップするとなぜかtrueで「2」が返されます。 ここをどうにか「"承認"以外の場合$getStatus = "9"」 として返したいのですが原因が分かりません。 皆さんからのアドバイス頂けたら嬉しい限りです。 よろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
if( $aspInfo['status_ok'] == $getStatus){ var_dump($aspInfo['status_ok']); var_dump($getStatus); echo bin2hex($aspInfo['status_ok']); echo bin2hex($getStatus); } とか色々やっても全部一致しますか? if( $aspInfo['status_ok'] == $getStatus) { の比較が = だったとか。 $getStatus を比較した直後に $getStatus に別物を代入していますが 近辺で誤って上書きしているとか。
その他の回答 (2)
- wp_
- ベストアンサー率54% (132/242)
>$getStatus = $recArray[ $aspInfo['para_status'] - 1 ]; >//print $getStatus; >if( $aspInfo['status_ok'] == $getStatus){ (snip) $aspInfo['status_ok']と$getStatusを同時に書き出して確認してみてはいかがでしょう。 意外なところで変数汚染があるかもしれません。 >※aspInfo['status_ok']・・・"承認"する条件(ここでは"承認"という文字列) これが定義なのだとしたらdefineした方が安全かと思います。 ちなみに if("承認"=="否認") $aa=1; else $aa=2; としてみましたが、文字コードsjis,euc,utf-8いずれも$aa=2となりましたよ。 // まぁ当然ですけど。
- maura
- ベストアンサー率46% (48/104)
if ( strcmp($aspInfo['status_ok'],$getStatus) == 0 ){ $getStatus = "2"; }else{ $getStatus = "9"; } でどうでしょうか
お礼
早速ありがとうございました。 上記のPHPに書き換えて試したところPHPが実行されなくなってしまいました・・・。 まだ原因は不明ですがいろいろ試してみたいと思います!
お礼
やはり承認と否認はそれぞれ別のものとして扱われているのですね・・・。 まだなぜすべてtrueで振り分けられてしまうのか不明な状況です・・・。 回答ありがとうございました!