[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: скрипт Число прописью
intreb
проблема в том что, если обратиться к скрипту, он выдаёт словами 2328 как положено.
а если его подключить в другой скрипт, то я получаю на этой строке ошибку Fatal error: Call to undefined function write_price_in_words()


почему/?


ситуация:
циклом выдаются цены в первом скрипте.
далее каждую цену нужно написать словами.

как это сделать?


авторы скрипта: Федорченко и Симдянов

<?php
///////////////////////////////////////////////////
// Скрипт Число прописью
// Версия 1.05 (en)
// 10.06.2005 © Федорченко А.А. (antf@inbox.ru)
// 17.02.2012 © Симдянов И.В. (igor@softtime.ru)

///////////////////////////////////////////////////
//для преобразования числа - функция write_number_in_words($num)
//для преобразования цены - фукнция write_price_in_words($price)

///////////////////////////////////////////////////
error_reporting(E_ALL & ~E_NOTICE);


echo write_price_in_words(2328);
/*
echo write_price_in_words(2328); echo "<br>";
echo write_price_in_words(15); echo "<br>";
echo write_price_in_words(1); echo "<br>";
echo write_price_in_words(27); echo "<br>";
echo write_price_in_words(125); echo "<br>";
echo write_price_in_words(83); echo "<br>";
echo write_price_in_words(57); echo "<br>";
echo write_price_in_words(137); echo "<br>";
echo write_price_in_words(220); echo "<br>";
*/


// число прописью

function write_price_in_words($price)
{
$price = number_format($price, 2, '.', '');
$point = strpos($price, '.');
//отделяем рубли от копеек
if(!empty($point))
{
$rub = substr($price, 0, $point);
$kop = substr($price, $point + 1);
}
// преобразуем число
$str = write_number_in_words($rub);
return $str;
}

//допустимый диапазон чисел 0 .. 999999
//число прописью

function write_number_in_words ($num, $genus = 'masculinum')
{
//разряд: единицы, десятки, сотни, тысячи
$cur_order = "единицы";
$cur_thousands_order = "единицы";
if($num == 0)
return " 00";
$num = strval($num);
$limit = strlen($num) - 1;
for($i = $limit; $i >= 0; $i--)
{
//тысячный разряд
if($cur_order == "тысячи")
{
//сотни
if($cur_thousands_order == "сотни")
{
$str = write_units_hundreds($num[$i]).$str;
}
//десятки
if($cur_thousands_order == "десятки")
{
$str = write_units_tens($num[$i], $next_digit).$str;
$cur_thousands_order = "сотни";
$next_digit = '';
}
//единицы
if($cur_thousands_order == "единицы")
{
if($num[$i-1] == "1")
{
$next_digit = $num[$i];
$str = " thousands".$str;
}
else
$str = write_units_thousands_units($num[$i]).$str;
$cur_thousands_order = "десятки";
}
}

//сотни
if($cur_order == "сотни")
{
$str = write_units_hundreds($num[$i]).$str;
$cur_order = "тысячи";
}
//десятки
if($cur_order == "десятки")
{
$str = write_units_tens($num[$i], $next_digit).$str;
$cur_order = "сотни";
$next_digit = '';
}
//единицы
if($cur_order == "единицы")
{
if($num[$i-1] == "1")
$next_digit = $num[$i];
else
$str = write_units($num[$i], $genus);
$cur_order = "десятки";
}
}

return($str);
}

//принадлежит функции write_number_in_words
//преобразует десятки

...............
..............

}
?>




Спустя 9 минут, 50 секунд (27.02.2012 - 22:38) Rand написал(а):
Функция в начале должна быть объявлена, а потом использована.
В первом скрипте:
$nums = array(2328, 15, 1);

require_once 'скрипт_с_функцией.php';

foreach($nums as $val) {
echo write_price_in_words($val) . '<br />';
}

Спустя 4 минуты, 47 секунд (27.02.2012 - 22:42) intreb написал(а):
респект коллега!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.