tro-suke blog

Homepage template is free, and the WordPress theme is free, too.
ホームページ制作/HPテンプレート無料、WordPressテーマも無料!!
blog top > CSS、PHP 備忘録 > PHP5.4にするとよく見かけるWarning: Illegal string offset ‘○○○’ in

PHP5.4にするとよく見かけるWarning: Illegal string offset ‘○○○’ in

使用しているサーバーのPHPのバージョンが5.4以降になってもうだいぶ経っているのですが、使用しているphpファイルが「Warning: Illegal string offset ‘○○○’ in」を返していた。Warningを返す箇所は、ファイルの何行目かを表示してくれるので、どこがおかしいかはすぐに判る。それでも思い通りに動いてくれていたので、とりあえずWarningの出る箇所に@を付けておけば、Warningは表示しなくなるのでそのまま使っていた。でもWarningが表示されないとはいえ解決されたわけではないから、ずっと気になっていた。この度ホームページをリニューアルした折、このWarningを解決した時の備忘録です。

まずこの「Warning: Illegal string offset ‘○○○’ in」とはなんだろう…?調べてみるとこのWarningは、存在しない文字列に関数がアクセスしようとするときに発生するらしい。PHP5.3からPHP5.4にアップデートした時、このWarningが表示されるケースが多いみたいだ。

Warning表示されるファイルというのは、Sapphirus.Bizさんのところで配布されている「クリックカウンタ」というものだ。この「クリックカウンタ」は、私のところで配布しているテンプレートやテーマの統計を取るのに使用している。年・月・日毎に棒グラフで表示してくれるし、とても優れものだ。
Illegal_string

PHP5.4ではWarningが表示されます

foreach ($result as $key => $arr) {
   $count_per = round($arr['count'] / $result['count_max'] * 95);
   // code here
}

 

関数を修正する

issetを使用して“もし文字列が存在するならアクセスする”という命令文を該当箇所に付け加えれば、Warningは出なくなるようだ。

foreach ($result as $key => $arr) {
   if (isset($arr['count'])) {
   $count_per = round($arr['count'] / $result['count_max'] * 95);
   // code here
   }
}

PHPに詳しい人でしたらすぐに直せるんでしょうね。そうでない私は先人の知恵をお借りすることとなりました。今回参考にさせていただいたサイトは「うしくんの日々」です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

▲ page top