プログラミング

A non well formed numeric value encounteredのエラーが出た時の対処法

こんにちは。リノです。

先日ECサイトの開発案件を進めている中で「A non well formed numeric value encountered」というエラーに出くわしたので、対処法をメモしておきます。ちなみに、このエラーはphp5では出なかったけどphp7にしたら出てしまうエラーらしい。

まず、エラーの意味を簡単に訳す、「ちゃんと整形されてない数値があるよ」ということです。僕がやろうとしたのは、date関数を使って現在日時をを取得して、それを整形しようとしたのですが、、。

以下、僕が実際にやったことです。

ということで対処法。実はめちゃくちゃ簡単。

date関数を使う前にstrtotime関数を使えば解消しちゃいます。

ちなみに、公式はこんなこと言ってます。

数値形式ではない文字列を使って、数値を期待する演算 (+ – * / ** % << >> | & ^ や、これらを用いた代入演算) を行おうとしたときに、 E_WARNING あるいは E_NOTICE レベルのエラーが発生するようになりました。 E_NOTICE が発生するのは、文字列が数値で始まっていながら非数値で終わる場合で、 E_WARNING が発生するのは文字列中に数値が含まれない場合です。

<?php

‘1b’ + ‘something’;

上の例の出力は以下となります。

Notice: A non well formed numeric value encountered in %s on line %d

Warning: A non-numeric value encountered in %s on line %d

PHP マニュアル 付録 PHP 7.0.x から PHP 7.1.x への移行

皆様のお役に立てば幸いです。