2013-08-04 63 views
1

我知道str_repeat無法處理負數;實際上我的確有一個解決我現在正在解決的問題,但是解決方法只能在我的測試服務器上工作......無論如何,我遇到的問題是我的網站的健康顯示系統。我擁有它,如果用戶的健康狀況低於0,則表示「住院」,如果超過0,則表示一對夫婦心臟。 但代碼神祕停止工作,現在只是給了我這個錯誤: 警告:str_repeat():第二個參數必須大於或等於0在/home5/thehave8/public_html/gmz1023/includes/class/template_engine.php在線53str_repeat和負數

我認爲這個數字是負數。

 $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; 
+0

爲第二次和第三次檢查嘗試'else if'而不是'if'。 – DCoder

回答

0

你檢查$hearts <= 0,再滴加通過以支票$hearts <10,這也是真實的 - 這就是你的錯誤。

試試這個:

if(($hearts < 10) && ($hearts >0)) 
{ 
    $health = str_repeat('&hearts;', $hearts); 
} 
1

使用ELSEIF。當$hearts小於或等於零時,您的代碼當前正在執行第一個和第三個if語句。使用elseif,如果第一個匹配,第三個if語句將不會執行。見the docs for 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; 
+0

這是做到了。謝謝!我想我原本是將它作爲elseif語句,但是將代碼恢復到更早的狀態。哪些蠢事愚弄東西了。 – Gmz1023