2017-02-14 8 views
0

I通知がオンになっているときまで低迷、次のメッセージがあります- これはどういう意味

お知らせ:

がこれを行う非整形数値は

に遭遇しました予想される値が単純な整数ではないことを意味しますか?あなたは難読化されたコードのコンテストか何かのためにそれを入力している

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

+0

この行の直前に 'var_dump($ raw、$ cast);'を追加してください。 –

+0

'string(2)" 14 "string(7)" 3 votes "' - 私はそれを取る文字列ではないように聞こえる? – Lee

+0

私は変数から 'votes'出力を削除しましたが、エラーは表示されなくなりました。多分それが必要なのです。 – Lee

答えて

0

あなたのコメントをありがとう非常に多くの、しかし、新鮮な目でこれを見た後、私はabitのを見ることができましたコードにさらに進んで、何が起きているのかが私にわかりました。

上記尋ね、私はとして返された$生と$キャストの値は、ダンプされたよう:

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

だからはっきりと、「3票」の数、または計算ISNことになっていますうまくいきません。私は上記の行を見ました。これは以下の通りです:

ビンゴ。私は終わりの「票」の出力を取り除き、数字だけを残しました。そしてメッセージは消えます。私はまだ、元のテキストがが出力されるようにしたいので、606本が含まれていた後、私は次の行を見つけました:

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

は、だから、僕は正しい出力になり、この行の末尾に「投票」を追加しましたWP管理者、そしてエラーは消えてしまった。

固定されており、プルリクエストが作成されています。すべてのあなたの助けをいただきありがとうございます。

1

:参照ラインはこれを見せていますか? : - D。私は通知メッセージを再現することはできませんが、コードを別々の行に分割すると、おそらく式のどの部分がメッセージを引き起こすのかが分かります。

$raw > 0はどうしてチェックされますか? $rawがゼロの場合、$perは単にゼロになります。

あなたがゼロエラーにより分裂を避けるためにしようとしている場合は、$raw$castをチェックする必要がありません。

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

最後のコメントとして、このコードの断片から、なぜ5で除算するのかは分かりません。それはちょうど魔法の数です。これを定数または変数にすることは明らかです。少なくとも、それが何であるかについてのコメントを残してください。

幸運を祈る!再現する

1

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

demo

が... PHP/7.1以降の警告を出力します。

お知らせ:中/で遭遇した非うまく形成された数値/ 8dsH7 on line 3
float(4.6666666666667)

彼らは明らかにエラーを防ぐために新しいチェックを追加しました。

数字のある数学は信頼性が高く、よく定義されています。任意のテキストの数学はそうではありません。それとも、あなたはこれが意味になり思います:

var_dump("pink" * "apples"); 

INT(0)

関連する問題