2017-02-14 34 views
0

,我有以下消息標記起來時通知被打開:遇到非合式數值 - 這是否意味着

注意:非合式數值遇到

這是否意味着預期的值不是一個簡單的整數?引用的行顯示這一點:

$per = ($raw>0?ceil((($raw/$cast)/5)*100):0).'%';

+0

在此行之前添加'var_dump($ raw,$ cast);'。 –

+0

'字符串(2)「14」字符串(7)「3票」「 - 聽起來好像他們不應該是字符串我把它? – Lee

+0

嗯我刪除了「票」輸出變量,現在錯誤消失。也許這就是它所需要的。 – Lee

回答

0

非常感謝您的意見,但隨着新的眼光看着這之後,我能看看升技進一步到代碼中,它發現了我正在發生的事情。

如上問,我甩$原料和$投,這是返回的值:所以很明顯

string(2) "14" string(7) "3 votes" 

,在「3票」應該是一個數字,或者計算ISN不會去工作。我看了上面的一行,內容如下:

$cast = (get_post_meta($id, '_kksr_casts', true)?get_post_meta($id, '_kksr_casts', true):'0').' votes'; 

賓果。我刪除了結尾的「票數」輸出,只留下了數字。消息消失。我還是想對原文進行,雖然輸出,所以我找到了下一行606包含在此之後:

$row = $avg . ' (' . $per . ') ' . $cast; 

所以我只是說在這行的末尾,這會導致正確的輸出在「選票」 WP Admin,現在錯誤消失了。

似乎修復了,並且創建了拉取請求。謝謝你們的幫助。

1

你進入它的模糊代碼大賽什麼的? :-D。我無法重現通知消息,但是如果將代碼拆分爲單獨的行,則可能會找出公式的哪一部分導致該消息。

你爲什麼要檢查是否$raw > 0?如果$raw爲零,則$per無論如何將簡單地結束爲零。

如果你想通過零錯誤,以避免師,那麼你就需要進行檢查$cast,不$raw

$per = 0; 
if ($cast > 0) { 
    $per = ($raw/$cast)/5 * 100; 
} 
$per .= "%"; 

作爲最終評論,從這段代碼中,不清楚爲什麼你除以五。這只是一個神奇的數字。將它變成一個常數或變量會更清楚;至少,留下評論是什麼。

祝你好運!

1

重現:

var_dump("14"/"3 votes"); 

demo

...打印,因爲PHP/7.1警告:

注意:在遇到非合式數值/在/ 8dsH7 on line 3
float(4.6666666666667)

所以他們顯然增加了新的檢查來防止錯誤。

帶數字的數學是可靠和明確的。具有任意文本的數學不是。或者,你覺得這是有道理的:

var_dump("pink" * "apples"); 

INT(0)