WordPressでエラーメッセージ「Warning: count()」が出たときの直し方

WordPressでエラーメッセージ「Warning: count()」が出たときの直し方

以下のようなエラーがWordPressサイトの上部に表示されていた時の解決方法です。

Warning: count(): Parameter must be an array or an object that implements Countable in …(ディレクトリ名)/wp-includes/single.php on line 200

A PHP Error was encountered
Severity: Warning
Message: count(): Parameter must be an array or an object that implements Countable

これらのエラーは、PHP7.2以降で起こるcount()メソッドのエラーです。count()は、変数またはオブジェクトの要素数を数えるメソッドです。

この記事では、count()エラーの対処法を紹介いたします。

エラーの原因

エラーの原因はcount()の引数にNULLオブジェクトを渡した時に、PHP7.1以前とPHP7.2以降での動作に変更が加えられたためです。

PHP7.1以前 : オブジェクトが空(NULL)のときは、0を返す
PHP7.2以降 : オブジェクトが空(NULL)のときは、エラーを返す

エラーの直し方

PHPのエラーメッセージを読むと、「single.php on line 200」にエラーが発生するコードがあることが分かります。single.phpを開いて、ソースコードを下記のように変更すると直ります。

【変更前】 エラーが出たるコード

//$hogeにNULLオブジェクトが入っていた場合にエラーが起きます。

if(count($hoge) == 1){
  //hogeが1以上の時に行いたい処理
}
else{
  //hogeがnullまたは0の時に行いたい処理
}

【変更後】エラーを直したソースコード

//$hogeにNULLオブジェクトが入っていてもエラーが出なくなります。

if(is_array($hoge) && count($hoge) == 1){
  //hogeが1以上の時に行いたい処理
}
else{
  //hogeがnullまたは0の時に行いたい処理
}

if文の条件式にis_array($hoge)を加えています。もしも$hogeが配列でなければ、falseを返すように命令しています。

このis_array()メソッドは、count()メソッドよりも先頭に記述する必要があります。演算子の&&は、最初の条件式がfalseだった場合、次の条件式を判定せずにelse文に飛ばすためです。もしも順番を間違えて、先にcount()条件式を判定してしまうと、同じようにエラーが出てしまいます。

まとめ

count()メソッドによるエラーは、is_array()を条件式に書き加えて対処する方法をおすすめします。他にもいろいろな解決方法がありますが、この方法が最もシンプルで簡単だと思います。

コメントを残す

メールアドレスが公開されることはありません。