1

str_repeat が負の数を処理できないことはわかっています。そして、私は実際に私が今抱えている問題を回避しましたが、回避策は私のテストサーバーでしか機能しませんでした. 私はそれを持っているので、ユーザーの健康状態が 0 を下回ると「入院中」と表示され、0 を超えるとハートがいくつか表示されます。しかし、コードは不思議なことに動作を停止し、次のエラーが表示されます: 警告: str_repeat(): 2 番目の引数は、/home5/thehave8/public_html/gmz1023/includes/class/template_engine.php の 0 以上でなければなりません。 53

これは、数値が負であることを意味しています。

        $vitals = parent::userVitals($uid);
    $hearts = round($vitals['health']/15);
    if($hearts <= 0)
    {
        $health = 'hospitalized';
    }
    if($hearts >= 10)
    {
        $health = str_repeat('&hearts;', 13);
        $health .= '+';
    }
    if($hearts < 10)
    {
        $health = str_repeat('&hearts;', $hearts);
    }
    return $health;
4

2 に答える 2

1

elseif を使用します。$heartsがゼロ以下の場合、コードは現在、最初と 3 番目の if ステートメントの両方を実行しています。elseif を使用すると、最初の if ステートメントが一致した場合、3 番目の if ステートメントは実行されません。elseif のドキュメントを参照してください。

$hearts = round($vitals['health']/15);
if($hearts <= 0)
{
    $health = 'hospitalized';
}
elseif($hearts >= 10)
{
    $health = str_repeat('&hearts;', 13);
    $health .= '+';
}
elseif($hearts < 10)
{
    //Now this is actually more than 0 and less than 10
    //You could even use else here
    $health = str_repeat('&hearts;', $hearts);
}
return $health;
于 2013-08-04T05:42:17.073 に答える
0

$hearts <= 0をチェックしてから のチェックにドロップします$hearts <10が、これも当てはまります-それがエラーの場所です。

これを試して:

if(($hearts < 10) && ($hearts >0))
{
    $health = str_repeat('&hearts;', $hearts);
}
于 2013-08-04T05:41:27.953 に答える