//変数の受け取り処理
$goods1 = $_POST["goods1"]; $kosuu1 = $_POST["kosuu1"]; $goods2 = $_POST["goods2"]; $kosuu2 = $_POST["kosuu2"]; $goods3 = $_POST["goods3"]; $kosuu3 = $_POST["kosuu3"]; $goods4 = $_POST["goods4"]; $kosuu4 = $_POST["kosuu4"]; $goods5 = $_POST["goods5"]; $kosuu5 = $_POST["kosuu5"]; //条件分岐 if (empty($goods1)) { $goods1 = 0; } if (empty($goods2)) { $goods2 = 0; } if (empty($goods3)) { $goods3 = 0; } if (empty($goods4)) { $goods4 = 0; } if (empty($goods5)) { $goods5 = 0; } $goukei = (($goods1 * $kosuu1) + ($goods2 * $kosuu2) + ($goods3 * $kosuu3) + ($goods4 * $kosuu4) + ($goods5 * $kosuu5)); echo $goukei; コード
変数の値はhtmlファイルから送信しています。
コードは上記ですが、phpが警告を出します。
Warning: A non-numeric value encountered in/ファイルのパス 67行目
echo $goukei;→出力すると正しい答えが返ってきますが、何故か上記の警告が出るのです。
全体を通しで書いていただけないでしょうか。日本語で説明されているところが、「本当にそのような挙動をする」コードなのかを判断できません。
実際にどういう値をどこからどのように投入できるのか、他者が手元で試せるコードを提示してください。
「エラーを吐く」ではなんのエラーか分かりません。エラーによって対処方法が違います。
あと、emptyは0もtrueなので「値がない」には使えないのでは
また「例外処理の方法」は一般的にtry-catchによるエラーハンドリングをさします。エラーハンドリングはどこですか?
こちらの内容は質問に追加させてもらいました。
質問は編集できます。
またマークダウン利用してください。
「エラーを吐く」ではなんのエラーか分かりません。エラーによって対処方法が違います。
わかりました。用事が済んだら再編集します。
皆様ありがとうございます。
次のような表現をし、念のために(int)を付加したら警告が出なくなりました。
if ($goods1 == "") {
$goods1 = (int)0;
}
if ($kosuu1 == "") {
$kosuu1 = (int)0;
}
これだけが正解ではないと思いますが、取り敢えず警告が消えたのをご報告します。
もともとの質問内容と差し替えでもされましたか?
https://teratail.com/questions/history-questions/341716
もう少し要件とかきちんと書いてありました。
あと、コードはマークダウンのcode機能にてご提示ください。
既についた回答のような表示になります。
わかりました。
質問内容を差し替えました。
今後は注意します。
いえあの
編集履歴1にある諸々の説明がないといきなりコードだけで「こんなですが」と意味がわかりません。
既存の回答とも繋がりにくいのでは。
確かにごちゃごちゃになり、ご迷惑をおかけしました。
回答2件
あなたの回答
tips
プレビュー