ホームページ  >  記事  >  バックエンド開発  >  PHP 通知: 整形式ではない数値が検出されました - 解決策

PHP 通知: 整形式ではない数値が検出されました - 解決策

PHPz
PHPzオリジナル
2023-08-18 18:52:492391ブラウズ

PHP Notice: A non well formed numeric value encountered - 解决方法

PHP 通知: 整形式ではない数値が検出されました - 解決策

PHP を使用した開発プロセス中に、警告やエラー メッセージが頻繁に表示されます。一般的な警告の 1 つは、「通知: 整形式ではない数値が検出されました」です。この警告は通常、文字列を数値に変換しようとしたときに表示されます。この記事では、この警告が表示される理由を理解し、いくつかの解決策を提供します。

この警告は通常、次の状況で表示されます。

  1. 数学演算を実行するとき、文字列が数値として使用されます。
  2. 人間が判読できる時刻形式をタイムスタンプに変換しようとする場合。
  3. 数値以外の文字を含む文字列を整数または浮動小数点数に変換しようとする場合。

一般的なコード例と回避策は次のとおりです:

1. 数学演算を実行するときに文字列を数値として使用します

$num1 = "10";
$num2 = "5";

// 错误示例
$result = $num1 + $num2;

// 正确示例
$result = intval($num1) + intval($num2);

エラーの例では、文字列 $num1 と $num2 を数値として使用して加算演算を実行します。 PHP は型指定が弱い言語であるため、文字列を数値に変換しようとします。ただし、文字列が正当な数値形式でない場合は、警告が表示されます。この問題を解決するには、intval() 関数を使用して文字列を整数に変換します。

2.人間が判読できる時刻形式をタイムスタンプに変換しようとするとき

$dateString = "2021-01-15";

// 错误示例
$timestamp = strtotime($dateString);

// 正确示例
$timestamp = strtotime("$dateString 00:00:00");

エラー例では、日付文字列を strtotime()に渡しています。 関数を使用してタイムスタンプに変換します。ただし、日付文字列には特定の時刻情報が含まれていないため、PHP はそれを現在の時刻のタイムスタンプに変換しようとします。その結果、結果は有効なタイムスタンプではなくなり、警告が表示されます。この問題を解決するには、日付文字列の後に特定の時刻情報を追加して、完全な日付と時刻の文字列にすることができます。

3. 数値以外の文字を含む文字列を整数または浮動小数点数に変換しようとした場合

$numberString = "123abc";

// 错误示例
$number = intval($numberString);

// 正确示例
$number = preg_replace("/[^0-9]/", "", $numberString);

エラー例では、文字列を変換しようとしています。数値以外の文字を含む文字列を整数または浮動小数点数に変換します。文字列には数値以外の文字が含まれているため、PHP はそれを数値として解析できず、警告が表示されます。この問題を解決するには、preg_replace() 関数を使用して、数値以外の文字を空の文字列に置き換えます。

概要:

警告メッセージ「通知: 整形式ではない数値が見つかりました」は、PHP 開発でよくあるエラーの 1 つです。この警告を引き起こすいくつかの一般的な状況を理解し、対応する解決策を提供することで、このエラーを回避し、より堅牢なコードを作成できます。文字列を数値に変換する場合、警告を回避するには、入力文字列が正当な数値形式であることを確認するか、対応する関数を使用して変換および処理する必要があります。

以上がPHP 通知: 整形式ではない数値が検出されました - 解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。