This document is for a version of CakePHP that is no longer supported. Please upgrade to a newer release!

Number

NumberHelper には、ビューにおいて数字を一般的なフォーマットで表示するのに便利なメソッドがあります。これらのメソッドは、通貨、パーセント、データサイズ、特定の精度へのフォーマット、そして数字のフォーマットにおけるさらなる柔軟性を提供します。

これらの関数は全て、フォーマットした数字を返し、自動的に出力しません。

currency

currency(mixed $number, string $currency= 'USD')

このメソッドは、数字を一般的な通貨のフォーマット(EUR,GBP,USD)で表示するために使用します。ビューにおける使用法は次のようになります。

<?php echo $number->currency($number,$currency); ?>

第一引数の「$number」は、表現したい金額の合計を表す浮動小数点でなければいけません。第二引数にはあらかじめ定義された通貨のフォーマットの枠組みを使います

$currency

1234.56 を通貨のタイプでフォーマットしたもの

EUR

€ 1.236,33

GBP

£ 1,236.33

USD

$ 1,236,33

通貨の記号として、必要であれば、 HTML エンティティが出力されます。

もし認識できない $currency の値が渡されたら、 USD フォーマットの数値の頭に $currency を追加します。次の例を見てください。

<?php echo $number->currency('1234.56', 'FOO'); ?>

// 出力:
FOO 1,234.56

precision

precision (mixed $number, int $precision = 3)

このメソッドは指定した精度(小数点以下の位)で数字を表示します。指定された精度にするため、数字は指定された小数点の位で丸められます。

<?php echo $number->precision(456.91873645, 2 ); ?>

// 出力:
456.92

toPercentage

toPercentage(mixed $number, int $precision = 2)

このメソッドは precision() のように、指定した精度に従い、渡された小数点の位で数値を丸めて、数値をフォーマットします。また、このメソッドは数字をパーセンテージとして表現し、パーセントの記号を出力に追加します。

<?php echo $number->toPercentage(45.691873645); ?>

// 出力:
45.69%

toReadableSize

toReadableSize(string $data_size)

このメソッドはバイトを「KB」「MB」「GB」そして「TB」に変換するショートカットを提供し、データサイズを人が読みやすいようフォーマットにします。サイズは与えられたデータの大きさによって小数点第二位まで表示されます。すなわち、大きなサイズは大きな単位で表現されます。

echo $number->toReadableSize(0);  // 0 Bytes
echo $number->toReadableSize(1024); // 1 KB
echo $number->toReadableSize(1321205.76); // 1.26 MB
echo $number->toReadableSize(5368709120); // 5 GB

format

format (mixed $number, mixed $options=false)

このメソッドはビュー内で数値をフォーマットすることができます。(他の NumberHelper メソッドはメインメソッドとして使用します)このメソッドを使用方法は次のようになります:

$number->format($number, $options);

$number パラメータは数値で、出力用にフォーマットしようとしているものです。$number が指定されないと、数値 1236.334 は、1,236 と出力します。デフォルトの精度は、1の位であることに注意してください。

$options パラメータはこのメソッドに対して本当の魔法をおく場所になります。

  • 整数を渡した場合、精度あるいは関数の places の値となります。

  • 連想配列を渡した場合、次のようなキーを使用できます:

    • places (integer): 精度

    • before (string): 出力される数値の前に置く文字

    • escape (boolean): 値がある場合にエスケープする

    • decimals (string): 小数点を区切るために使用される文字

    • thousands (string): 千位(千,百万等)毎の区切り文字

echo $number->format('123456.7890', array(
    'places' => 2,
    'before' => '¥ ',
    'escape' => false,
    'decimals' => '.',
    'thousands' => ','
));
// 出力 '¥ 123,456.79'