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

NumberHelper

class NumberHelper(View $view, array $settings = array())

NumberHelper は、ビューの中で一般的な書式で数値を表示するための 便利なメソッドを持っています。これらのメソッドは、通貨、パーセンテージ、データサイズ、 指定した精度に整えられた数値へのフォーマットや、他にもより柔軟に数値のフォーマットを行います。

バージョン 2.1 で変更: NumberHelper は、 View レイヤーの外でも簡単に使えるように CakeNumber クラスにリファクタリングされました。ビューの中で、これらのメソッドは NumberHelper クラスを経由して アクセス可能です。通常のヘルパーメソッドを呼ぶように呼び出せます: $this->Number->method($args);

以下の全ての関数は、整形された数値を返します。 これらは自動的にビューに出力を表示しません。

NumberHelper::currency(float $number, string $currency = 'USD', array $options = array())
パラメータ:
  • $number (float) -- 変換する値

  • $currency (string) -- 使用する通貨フォーマット

  • $options (array) -- オプション、以下を参照

このメソッドは、共通通貨フォーマット(ユーロ、英ポンド、米ドル)で数値を表示するために使用されます。 ビュー内で次のように使います。

// NumberHelper として実行
echo $this->Number->currency($number, $currency);

// CakeNumber として実行
App::uses('CakeNumber', 'Utility');
echo CakeNumber::currency($number, $currency);

1つ目のパラメータ、 $number は、合計金額をあらわす浮動小数点数でなければいけません。 2つ目のパラメータは、あらかじめ定義された通貨フォーマット方式を選択するための文字列です。

$currency

通貨の種類によってフォーマットされた 1234.56

EUR

€1.234,56

GBP

£1,234.56

USD

$1,234.56

3つ目のパラメータは、出力を定義するためのオプションの配列です。 次のオプションが用意されています

オプション

説明

before

数値の前に表示される通貨記号。例: '$'

after

少数値の後に表示する通貨記号。例: 'c' 記号を表示させないためには false をセットします。 例: 0.35 => $0.35

zero

ゼロ値の場合に使用するテキストで、 文字列か数値で指定できます。例: 0, '無料!'

places

小数点以下の桁数を指定します。例: 2

thousands

千の区切り。例: ','

decimals

小数点。例: '.'

negative

負の数の記号。もし '()' の場合、数値は ( と ) で 囲まれます。

escape

htmlentity でエスケープされるかどうか。 デフォルトは、true

wholeSymbol

整数に使用する文字列。例: ' dollars'

wholePosition

wholeSymbol の配置を 'before' または 'after' の どちらにするか。

fractionSymbol

小数に使用する文字列。例: ' cents'

fractionPosition

fractionSymbol の配置を、'before' または 'after' のどちらに配置するか。

fractionExponent

小数点以下の桁数。デフォルトは 2

未定義の $currency 値が指定された場合、 USD 形式の数値を返します。例:

// NumberHelper として実行
echo $this->Number->currency('1234.56', 'FOO');

// 出力結果
FOO 1,234.56

// CakeNumber として実行
App::uses('CakeNumber', 'Utility');
echo CakeNumber::currency('1234.56', 'FOO');

バージョン 2.4 で変更: fractionExponent オプションが追加されました。

NumberHelper::defaultCurrency(string $currency)
パラメータ:

デフォルトの通貨のゲッター・セッター。これで CakeNumber::currency() の通貨の指定を 省略できます。デフォルトを他の設定にすることで、すべての通貨の出力を変更します。

バージョン 2.3 で追加: このメソッドは 2.3 で追加されました。

NumberHelper::addFormat(string $formatName, array $options)
パラメータ:
  • $formatName (string) -- 将来使用するためのフォーマット名

  • $options (array) -- このフォーマットのオプション配列。 CakeNumber::currency() と同じ $options キーを使用してください。

Number ヘルパーのための通貨フォーマットを追加します。通貨フォーマットをより簡単に 再利用できます。

// NumberHelper として実行
$this->Number->addFormat('BRL', array('before' => 'R$', 'thousands' => '.', 'decimals' => ','));

// CakeNumber として実行
App::uses('CakeNumber', 'Utility');
CakeNumber::addFormat('BRL', array('before' => 'R$', 'thousands' => '.', 'decimals' => ','));

これで、金額のフォーマット時に通貨のショート形式として BRL を使用できます。

// NumberHelper として実行
echo $this->Number->currency($value, 'BRL');

// CakeNumber として実行
App::uses('CakeNumber', 'Utility');
echo CakeNumber::currency($value, 'BRL');

追加されたフォーマットは、以下のデフォルトとマージされます。

array(
    'wholeSymbol'      => '',
    'wholePosition'    => 'before',
    'fractionSymbol'   => false,
    'fractionPosition' => 'after',
    'zero'             => 0,
    'places'           => 2,
    'thousands'        => ',',
    'decimals'         => '.',
    'negative'         => '()',
    'escape'           => true,
    'fractionExponent' => 2
)
NumberHelper::precision(mixed $number, int $precision = 3)
パラメータ:
  • $number (float) -- 変換する値

  • $precision (integer) -- 表示したい小数点以下の桁数

このメソッドは指定された精度 (小数点以下) で数値を表示します。 定義された精度のレベルを維持するために丸めます。

// NumberHelper として実行
echo $this->Number->precision(456.91873645, 2);

// 出力
456.92

// CakeNumber として実行
App::uses('CakeNumber', 'Utility');
echo CakeNumber::precision(456.91873645, 2);
NumberHelper::toPercentage(mixed $number, int $precision = 2, array $options = array())
パラメータ:
  • $number (float) -- 変換する値

  • $precision (integer) -- 表示したい小数点以下の桁数

  • $options (array) -- オプション、以下を参照

オプション

説明

multiply

値を100で乗算しなければならないかどうかを示す Boolean 値です。少数のパーセンテージに便利です。

このメソッドは precision() のように、与えられた精度に応じて (精度を満たすように丸めて) 数値をフォーマットします。このメソッドは パーセンテージとして数値を表現し、パーセント記号を追加して出力します。

// NumberHelper として実行。出力結果: 45.69%
echo $this->Number->toPercentage(45.691873645);

// CakeNumber として実行。出力結果: 45.69%
App::uses('CakeNumber', 'Utility');
echo CakeNumber::toPercentage(45.691873645);

// multiply を有効にして実行。 出力結果: 45.69%
echo CakeNumber::toPercentage(0.45691, 2, array(
    'multiply' => true
));

バージョン 2.4 で追加: $options 引数に multiply オプションが追加されました。

NumberHelper::fromReadableSize(string $size, $default)
パラメータ:
  • $size (string) -- 人が読める形式の値

このメソッドは、人が読める形式のバイトサイズからバイトの整数値に変換します。

バージョン 2.3 で追加: このメソッドは 2.3 で追加されました。

NumberHelper::toReadableSize(string $dataSize)
パラメータ:
  • $dataSize (string) -- 人が読める形式にしたいバイト数

このメソッドはデータサイズを人が読める形式にフォーマットします。これは、バイト数を KB、MB、GB、および TB へ変換するための近道を提供します。サイズは、 データのサイズに応じて小数点以下二桁の精度で表示されます。(例 大きいサイズの表現)

// NumberHelper として実行
echo $this->Number->toReadableSize(0); // 0 Bytes
echo $this->Number->toReadableSize(1024); // 1 KB
echo $this->Number->toReadableSize(1321205.76); // 1.26 MB
echo $this->Number->toReadableSize(5368709120); // 5.00 GB

// CakeNumber として実行
App::uses('CakeNumber', 'Utility');
echo CakeNumber::toReadableSize(0); // 0 Bytes
echo CakeNumber::toReadableSize(1024); // 1 KB
echo CakeNumber::toReadableSize(1321205.76); // 1.26 MB
echo CakeNumber::toReadableSize(5368709120); // 5.00 GB
NumberHelper::format(mixed $number, mixed $options=false)

このメソッドは、あなたのビューの中で使用する数値の整形をより制御しやすくします。 (そして、メインのメソッドとして他の NumberHelper メソッドによって使用されます。) 次のように、このメソッドを使用します。

// NumberHelper として実行
$this->Number->format($number, $options);

// CakeNumber として実行
CakeNumber::format($number, $options);

$number パラメータは、出力のために整形しようとしている数値です。 $options が未指定の場合、 1236.334 は、 1,236 と出力されます。 デフォルトの精度は、小数点以下がゼロになることに注意してください。

$options パラメータは、このメソッドに存在している手品のタネの在りかです。

  • もし整数を渡した場合、この関数の精度もしくは小数点以下の桁数の値になります。

  • もし連想配列を渡した場合、以下のキーが使用できます。

    • places (integer): 小数点以下の桁数

    • before (string): 数値の前に表示する文字列

    • escape (boolean): エスケープするかどうか

    • decimals (string): 少数の区切りとして利用する文字列

    • thousands (string): 千の位、100万の位、... の区切りとして利用する文字列

例:

// NumberHelper として実行
echo $this->Number->format('123456.7890', array(
    'places' => 2,
    'before' => '¥ ',
    'escape' => false,
    'decimals' => '.',
    'thousands' => ','
));
// 出力結果 '¥ 123,456.79'

// CakeNumber として実行
App::uses('CakeNumber', 'Utility');
echo CakeNumber::format('123456.7890', array(
    'places' => 2,
    'before' => '¥ ',
    'escape' => false,
    'decimals' => '.',
    'thousands' => ','
));
// 出力結果 '¥ 123,456.79'
NumberHelper::formatDelta(mixed $number, mixed $options=array())

このメソッドは、符号付きの数として値の差分を表示します。

// NumberHelper として実行
$this->Number->formatDelta($number, $options);

// CakeNumber として実行
CakeNumber::formatDelta($number, $options);

$number パラメータは、出力のために整形しようとしている数値です。 $options が未指定の場合、 1236.334 は、 1,236 と出力されます。 デフォルトの精度は、小数点以下がゼロになることに注意してください。

$options パラメータは、 CakeNumber::format() と同じキーを持ちます。

  • places (integer): 小数点以下の桁数

  • before (string): 数値の前に表示する文字列

  • escape (boolean): エスケープするかどうか

  • decimals (string): 少数の区切りとして利用する文字列

  • thousands (string): 千、100万、... の区切りとして利用する文字列

例:

// NumberHelper として実行
echo $this->Number->formatDelta('123456.7890', array(
    'places' => 2,
    'decimals' => '.',
    'thousands' => ','
));
// 出力結果 '+123,456.79'

// CakeNumber として実行
App::uses('CakeNumber', 'Utility');
echo CakeNumber::formatDelta('123456.7890', array(
    'places' => 2,
    'decimals' => '.',
    'thousands' => ','
));
// 出力結果 '+123,456.79'

バージョン 2.3 で追加: このメソッドは 2.3 で追加されました。

警告

2.4 から、シンボルは UTF-8 になりました。もし、非 UTF-8 アプリを実行する場合、 詳しくは移行ガイドをご覧ください。