function localef({amount) {
// Экспорт значений, возвращаемых localeconv, в локальную область видимости extract(localeconv());
Сначала число форматируется с помощью number_format(). Эта функция использует абсолютное значение $amount, поэтому мы убираем знак минус. Необходимо обеспечить абсолютное значение $amount, потому что локаль может определять свои знаки вместо обычных плюса (+) и минуса (-). Эта функция устанавливает в $sign правильный знак:
Сначала форматируется число без знака {number = number_format(abs($amount), $frac_digits, {mon_decimal_point, {mon_thousands_sep);
Функция localef также строит ключ, с помощью которого можно будет потом найти нужный формат в массиве. Ключ строится путем конкатенации различных переменных, используемых для выбора формата строки. Этот прием делает код более компактным, чем в случае применения операторов if и case. Таким образом, каждый символ ключа соответствует различному выбору.
Если первый символ 1, значит, имеет истинное значение,
т. е. символ денежной единицы должен предшествовать числу. Поэтому мы видим, что $currency_symbol предшествует %s во всех строках формата, ключ которых начинается с 1. Спецификатор %s будет заменен фактическим числом, когда далее строка формата будет применена:
if (Samountc 0) {
Ssign = $negative_sign;
/* Следующие команды преобразуют булево значение в целое число */ Sn_cs„precedes = intval($n_cs_precedes == true); $n_sep_by_space = intval ($n_sep_by_space == true); Skey = $n_cs_precedes . $n_sep_by_space . $n_sign_posn; } else {
Ssign = $positive_sign;
$p_cs_precedes = intval($p_cs_precedes — true);
Sp_sep_by_space = intval($p_sep_by_space == true); $key = $p cs precedes . $p sep_by_space . $p_sign_posn;
}
$formats = array(
// Символ денежной единицы после суммы // Без пробела между суммой и знаком. 'ООО' => '(%s' . Scurrency_symbol . ')', '001' => Ssign . '%s ' . Scurrency„symbol, '002' => '%s' . $currency_symbol . $sign, '003' => '%s' - Ssign . $currency_symbol, '004' => ■«$' . Ssign . $currency_symbol,
// Один пробел между количеством и знаком. '010 => '(Us1 . Scurrency_symbol . ')', '011' => $sign . '%s ' . Scurrency^symbol, '012' => '%s ' . Scurrency_sytnbol . Ssign, '013' => '%s ' . Ssign . Scurrency_symbol, '014 => '%s ' . Ssign . $currency_symbol,
// Символ денежной единицы перед суммой // Без пробела между суммой и знаком. '100' => '(' . $currency_syinbol . '%s)'r '101' => Ssign . Scurrency.symbol . '%s', '102' => $currency_symbol . '%s' . Ssign, '103' => Ssign . $currency_symbol . ' %s', '104' => $currency_symbol . Ssign . '%s',