我知道str_repeat无法处理负数;我确实有一个解决我现在遇到的问题的工作,但是工作只能在我的测试服务器上工作...无论如何我遇到的问题是我的网站的健康显示系统。我有它,所以如果用户的健康状况低于0,它会显示“住院”,如果它高于0,则表示有几颗心。 但代码神秘地停止工作,现在只是给我这个错误: 警告:str_repeat():第53行/home5/thehave8/public_html/gmz1023/includes/class/template_engine.php中第二个参数必须大于或等于0
我认为这个数字是负数。
$vitals = parent::userVitals($uid);
$hearts = round($vitals['health']/15);
if($hearts <= 0)
{
$health = 'hospitalized';
}
if($hearts >= 10)
{
$health = str_repeat('♥', 13);
$health .= '+';
}
if($hearts < 10)
{
$health = str_repeat('♥', $hearts);
}
return $health;
答案 0 :(得分:1)
使用elseif。当$hearts
小于或等于零时,您的代码当前正在执行第一个和第三个if语句。使用elseif,如果第一个if语句匹配,则不会执行第三个if语句。请参阅the docs for elseif。
$hearts = round($vitals['health']/15);
if($hearts <= 0)
{
$health = 'hospitalized';
}
elseif($hearts >= 10)
{
$health = str_repeat('♥', 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);
}
return $health;
答案 1 :(得分:0)
您正在检查$hearts <= 0
,然后直接检查$hearts <10
,这也是正确的 - 这就是您的错误所在。
试试这个:
if(($hearts < 10) && ($hearts >0))
{
$health = str_repeat('♥', $hearts);
}