Fatal error: Uncaught TypeErrorの発生原因と対処した方法

エラーメッセージ全文

Fatal error: Uncaught TypeError: number_format(): Argument #1 ($num) must be of type float, string given

エラー該当コード

定価:<?php echo number_format(SCF::get('price')); ?>円(税込)

エラーメッセージの意味

このエラーメッセージは、number_format関数に渡される最初の引数が、文字列型(string)ではなく浮動小数点型(float)である必要があることを示しています。

Fatal ErrorなのでPHPプログラムの実行が停止されます。

number_format関数

number_formatは、PHPの関数で、数値を整数部分と小数部分を含む文字列にフォーマットするために使用されます。主に金額や数値を表示する際に便利です。

ちなみに実務経験では商品一覧ページに「価格の安い順、高い順」のソートを実装するために使用しました。価格はSmart Custome Fieldsプラグインを使用して、管理画面から入力しています。

入力した価格はecho SCF::get('price');で出力することができますが、(priceはカスタムフィールドで設定した名前)、文字列として認識されるため、正しくソートされません。

そこでecho number_format(SCF::get('price'));とすることで正しくソートを実装することができます。

number_formatを使用するとき、管理画面から入力する価格はカンマ(,)なしで入力する必要があります。

エラーの発生原因

しかし、SCF::get(‘price’)の値が文字列型のままだとエラーが発生します。

修正するためには、number_format()関数に渡す前に値を浮動小数点型に変換する必要があります。

実際にどう対処したのか

SCF::get('price')に(float)を付与して文字列型から浮動小数点型にキャストすればエラーが解消されます。

定価:<?php echo number_format((float) SCF::get('price')); ?>円 (税込)
キャストとは「型変換」のことを指します。
変数やデータの型を明示的に変更する操作のことで、これは、変数やデータが特定の型であることを保証し、その型に関連する演算や処理を行うために使用されます。

まとめ

number_formatを使用するとき、渡される値がfloat型である必要があることに注意しましょう。

他のPHPエラーの記事

他のPHPエラー

PHPのエラーの種類について解説しています。具体例や解決方法については順次更新していきます。

依頼があった月の実務経験

22年9月依頼実績

2022年の9月の依頼実績です。静的ページからWordPressのTHE THORへの移行、カスタム投稿タイプの作成、レビュー機能の作成、2種類の検索フォームの作成、 診断ページの作成、並べ替え機能の実装などのご依頼をいただきました。

>お問い合わせはこちら

お問い合わせはこちら