ロゴマーク 2020/08/08 PHP

phpでcount関数を使うとwarning

ライターhiro
最近Youtubeもやってます。チャンネル登録よろしく!

最近PHPのバージョンアップの作業でよく見かけるのが、count関数を使ってカウントできない物を引数にしている場合に出る

Warning: count(): Parameter must be an array or an object that implements Countable in~~~~~~

というWarningです。

これはPHPのバージョン7.2以降で発生する現象で、7.1から7.4に上げようとしているのでこれにひっかかってしまいました。

よくこのWarningにひっかかるパターンとしてはDBからデータを取得し、データが存在している時は配列で入っているので問題ないのですが、条件に該当しなかったとかでデータが無かった場合です。

$dataという変数にこれが入るとイメージしてもらって、データがあれば配列がはいっている、なければnullが入ってしまう変数をカウントしてるってパターンですね。

簡単なソースを書くと

"SELECT * FROM `ITEM_DATA` WHERE id = 1"

みたいなSQLでデータを取得し、それが$dataに入るようなソースがあったとして、それをカウントしてしまう場合ですね。

$count_data = count ( $data );

こんな感じです。

今まではこれで問題なかったのですが、

配列であればcount()するという処理に変えればOKなので、

$count_data = count ( $data );

( is_array ($data) ) ? $count_data = count ( $data ): $count_data = 0;

って感じで配列ならカウントして、配列じゃなければintの0を入れるという処理に書き換えています。

三項演算子で処理するのがいいかと思い公式は以下です。

式A ? trueの時の処理 : falseの時の処理;

式Aの後に ? を入れ式Aがtrueなら:より前の処理をして、falseなら:より後ろの処理をします。1行でかけるif文みたいなものです。

count関数を使ってる箇所が恐ろしい量あるので、気が滅入ってきました・・・。

最近Youtubeもやってます。チャンネル登録よろしく!

トップへ戻る Page
top
Top