Показать сообщение отдельно

  #2  
Старый 08.04.2007, 00:07
je0n
Постоянный
Регистрация: 14.05.2006
Сообщений: 334
Провел на форуме:
1543521

Репутация: 272
Отправить сообщение для je0n с помощью ICQ
По умолчанию

аааааа, чувак, я не разбирался, но мне кажеться у тебя с функцией все нормально. Просто объявление своих массивов втули во внутырь функции. В пхп все что за пределами функции внутри ее не видно.



-------Добавлено--------
Короче смотри братец. В функции все нормально кроме одного - в делфи нумераци массивов (при этом раскладе) начиналась с 1, а в пхп с 0. Из-за этого получались косяки. Вот я тупо поменял все значения массивов на 1 меньше. И все работает. А так все осталось твоим прежним. Держи:
PHP код:

function IntToStroka($n)
{
    
    
$N1 = Array("ноль","один","два","три","четыре","пять","шесть","семь","восемь","девять");

$N1000 = Array("одна","две","три","четыре","пять","шесть","семь","восемь","девять");

$N11 = Array("десять","одиннадцать","двенадцать","тринадцать","четырнадцать","пятнадцать","шестнадцать","семнадцать","восемнадцать","девятнадцать");

$N2 = Array("десять","двадцать","тридцать","сорок","пятьдесят","шестьдесят","семьдесят","восемьдесят","девяносто");

$N3 = Array("сто","двести","триста","четыреста","пятьсот","шестьсот","семьсот","восемьсот","девятьсот");

$NThousand = Array("тысяча ","тысячи ","тысяч ");

$NMillion = Array("миллион ","миллиона ","миллионов ");

$degt false;
$degm false;
$s strval($n);
$res "";
$buf="";
for(
$i=strlen($s)-1;$i>=0;$i--)
{
    
$dec=strlen($s)-$i;   //получаем разряд
//    echo $dec;
    
$j=intval($s[$i]);
    if(
$j==0)$j0=0;
    if (!
in_array($j,range(1,9)) && ($dec != 1))continue;
    if (
in_array($dec,array(1,4,7,10)))
      if (
intval($s[$i]) == 1)
      {
        
$j0 $j;
        continue;
      }
      
      
    if (
in_array($dec,array(2,5,8,11)))
      if (
$j == 1)
        {
        switch(
$dec)
          {
          case 
2$res $N11[$j0]." "; break;
          case 
5$res $N11[$j0]." ".$NThousand[2].$res$degt true; break;
          case 
8$res $N11[$j0]." ".$NMillion[2].$res$degm true; break;
          }
        continue;
        }

    if (
in_array($dec,range(4,6)))
      {
      if (
$j != && !$degt)
        {
        if (
$dec == 4)
          switch(
$j)
            {
            case 
1$buf $NThousand[0]; break;
            case 
2:
            case 
3:
            case 
4$buf $NThousand[1]; break;
            case 
5:
            case 
6:
            case 
7:
            case 
8:
            case 
9$buf $NThousand[2]; break;
            default: 
$buf $NThousand[2]; $degt true;
            }
        }
      }

    if (
in_array($dec,range(7,9)))
      {
      if (
$j != && !$degm)
        {
        if (
$dec == 7)
          switch(
$j)
            {
            case 
1$buf $NMillion[0]; break;
            case 
2:
            case 
3:
            case 
4$buf $NMillion[1]; break;
            case 
5:
            case 
6:
            case 
7:
            case 
8:
            case 
9$buf $NMillion[2]; break;
            default: 
$buf $NMillion[2]; $degm true;
            }
        }
      }

    
$res $buf.$res;
    while (
$dec 3)
      
$dec -= 3;
    switch (
$dec)
      {
      case 
1: if ($j != 0) if ($degt && !$degm$res $N1000[$j]." ".$res; else $res $N1[$j]." ".$res; break;
      case 
2$res $N2[$j-1]." ".$res; break;
      case 
3$res $N3[$j-1]." ".$res; break;
      }
    
$buf "";
    
$j0 $j;
    }
  return 
$res;


Последний раз редактировалось je0n; 08.04.2007 в 01:03..
 
Ответить с цитированием