1.microtime「文字なの?数値なの?ハッキリしてよ!」
■エラー内容ErrorException: A non well formed numeric value encountered in /ファイル名
意訳:型間違ってますよ
該当行コード:$time = microtime() * 1000;
■エラー原因
http://php.net/manual/ja/function.microtime.php
TRUE を指定すると、microtime() は文字列ではなく float を返すようになります。
■修正方法
数値として扱うときはmicrotime(true)にしろってことですね。
2.split「じゃあな。後のことはpreg_splitとexplodeに頼んだ」
■エラー内容Uncaught Error: Call to undefined function split() in /ファイル名
意訳:split()なんて存在しませんぞ
該当行コード:print_r(split('/・/', $title));
■エラー原因
http://php.net/manual/ja/function.split.php
この関数は PHP 5.3.0 で 非推奨 となり、 PHP 7.0.0 で 削除 されました。
もと(PHP5.3)から非推奨ではあったけど、ついに削除されたようです。
■修正方法
正規表現を使って文字列分割したい場合→preg_split()
正規表現を使わず文字列分割したい場合→explode()
3.PHP7.1「これからは連想配列のアクセス順のこと、ちゃんと考えるね…」
■エラー内容ErrorException: Array to string conversion in /ファイル名
意訳:そこの配列、文字列にしてよ
該当行コード:$this->$user['name']
■エラー原因
http://php.net/manual/ja/migration70.incompatible.php
変数やプロパティそしてメソッドへの間接的なアクセスを、厳密に左から右の順で評価するようになりました。
5.6とPHP7.1では違う順番でアクセスするよう変更になったからArray to string conversionがでちゃうんですね。
私「$this->$user['name'] ってどういう意味かわかる?」
PHP5.6「$this->{$user['name']} って意味だよね!」 →OKや!
PHP7.1「冷静に考えたら ($this->$user)['name'] だったわ」 →errorや!
■修正方法
今までのバージョンにおける右から左の評価を想定しているコードは、 波括弧を使って評価順を明示するように (表の中央列のように) 書き直す必要があります。
ということでエラー回避方法は{}をつけて今までと同じ優先順位を維持させること