3. メンテナンス・トラブルシュート - PHP - PHP 7.2 - A non-numeric value encountered

 
3.1 概要
3.2 調査
3.3 対応

3.1 概要

 ウェブサーバのエラーログに

[Sat Jul 07 10:42:35.506855 2018] [php7:warn] [pid 62943] [client 192.168.1.5:50142] PHP Warning:  A non-numeric value encountered in /パス/ソース名.php on line 138, referer: http://URI/
 というのが出力されます。

3.2 調査

 これは「PHP マニュアル - 付録 - PHP 7.0.x から PHP 7.1.x への移行 - その他の変更」に記載があります。
無効な文字列による算術演算の通知

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

<?php
'1b' + 'something';

3.3 対応

 実際のソースでは

    public function 関数名($table, $offset)
    {
        global $connect;

        $sql  = "select 略 ";
        $sql .= "order by no desc offset ". $offset * PAGE . " limit " . PAGE. " ";

        $resource = pg_query($connect, $sql);
        $i = 0;
 というコーディングがしてあります。  6行目の個所で出力されているわけです。  最終的には

    public function 関数名($table, int $offset)
 としたいのですが、現時点では、呼び出し側の修正量が大量になりますので、今回は

    public function 関数名($table, $offset)
    {
        global $connect;

        $sql  = "select 略 ";
        $sql .= "order by no desc offset ". (int)$offset * (int)PAGE . " limit " . PAGE. " ";

        $resource = pg_query($connect, $sql);
        $i = 0;
 と、変数をキャストすることにしました。