アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になっています。
現在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"」 として返したいのですが原因が分かりません。

皆さんからのアドバイス頂けたら嬉しい限りです。
よろしくお願い致します。

A 回答 (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 に別物を代入していますが
近辺で誤って上書きしているとか。
    • good
    • 0

>$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となりましたよ。
// まぁ当然ですけど。
    • good
    • 0
この回答へのお礼

やはり承認と否認はそれぞれ別のものとして扱われているのですね・・・。
まだなぜすべてtrueで振り分けられてしまうのか不明な状況です・・・。

回答ありがとうございました!

お礼日時:2007/12/07 13:02

 if ( strcmp($aspInfo['status_ok'],$getStatus) == 0 ){


  $getStatus = "2";
 }else{
  $getStatus = "9";
 }
でどうでしょうか

参考URL:http://logic.stepserver.jp/memo.cgi/archive/506/
    • good
    • 0
この回答へのお礼

早速ありがとうございました。
上記のPHPに書き換えて試したところPHPが実行されなくなってしまいました・・・。
まだ原因は不明ですがいろいろ試してみたいと思います!

お礼日時:2007/12/07 13:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!