エラーメッセージ全文
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'));
とすることで正しくソートを実装することができます。
エラーの発生原因
しかし、SCF::get(‘price’)の値が文字列型のままだとエラーが発生します。
修正するためには、number_format()関数に渡す前に値を浮動小数点型に変換する必要があります。
実際にどう対処したのか
SCF::get('price')
に(float)を付与して文字列型から浮動小数点型にキャストすればエラーが解消されます。
定価:<?php echo number_format((float) SCF::get('price')); ?>円 (税込)
変数やデータの型を明示的に変更する操作のことで、これは、変数やデータが特定の型であることを保証し、その型に関連する演算や処理を行うために使用されます。
まとめ
number_format
を使用するとき、渡される値がfloat型である必要があることに注意しましょう。
他のPHPエラーの記事
依頼があった月の実務経験
2022年の9月の依頼実績です。静的ページからWordPressのTHE THORへの移行、カスタム投稿タイプの作成、レビュー機能の作成、2種類の検索フォームの作成、 診断ページの作成、並べ替え機能の実装などのご依頼をいただきました。