1

我知道 str_repeat 不能处理负数;实际上,我确实已经解决了我现在遇到的问题,但是解决方法仅在我的测试服务器上有效……无论如何,我遇到的问题是我网站的健康显示系统。我有它,所以如果用户的健康状况低于 0,它会说“住院”,如果它高于 0,它会显示几颗心。但是代码神秘地停止工作,现在只给我这个错误:警告:str_repeat():第二个参数必须大于或等于0 in /home5/thehave8/public_html/gmz1023/includes/class/template_engine.php 在线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当小于或等于零时,您的代码当前正在执行第一个和第三个 if 语句。使用 elseif,如果第一个匹配,则不会执行第三个 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 回答