а если его подключить в другой скрипт, то я получаю на этой строке ошибку 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 написал(а):
респект коллега!