2

アイテムに与えられた平均ユーザー評価を取得し、それを関連するクラスに変換するこの関数があります。

function get_user_rating_class($urate_ave){
    if($urate_ave==='0.0'){
        $user_rating_class='unrated_u';
    }else{
        $round_to = 0.5;
        $rounded = round($urate_ave / $round_to) * $round_to;
        $removedec = str_replace('.','',$rounded);
        if(strlen($removedec)<2){$removedec.'0';}
        $user_rating_class='rating_user_'+$removedec;
    }
    return $user_rating_class;
}

いいえ、たとえば3.0の値を関数に入れると、rating_user_30として出力されるはずですが、代わりにrating_user_3として出力されるので、この行に何か問題があるはずです。

if(strlen($removedec)<2){$removedec.'0';}

$ removedecの値を文字列ではなく数値として扱っていたためかもしれないと思ったので、その直前にこの行を追加しようとしましたが、変更はありませんでした。

$removedec = strval($removedec);

誰かが私がここで間違っていることを教えてもらえますか?

4

3 に答える 3

9

文字列に値を追加し、変数をその値に設定する.=代わりにを使用する必要があります。ドット演算子だけで値が追加されますが、変数の値は変更されません。.

$removedec .= '0';
于 2012-10-02T12:50:58.363 に答える
1

はい、あなたは正しいです、あなたは次のように値を割り当てるのを忘れました:

if(strlen($removedec)<2){$removedec=$removedec.'0';}
于 2012-10-02T12:51:26.673 に答える