[php] zamiana liczb na słowa

0

Witam

Znalazlem funkcję zamiany, jednak w delphi i probowalem przerobić na PHP, zacząłem następująco:

function div($a,$b){
 return floor($a/$b);
}					
		

 function Slow($t){
    $result = '';
	
		if ($t[2] == 1) 
			$result=$s[$t[1]]+$n[$t[2].$t[3]];
		else
			$result= $s[$t[1]]+$d[$t[2]]+$j[$t[3]];
}			
			

następnie ustaliłem zmienne tablicowe

 $j = array( 1 => 'jeden',
 					 2 => 'dwa',
					 3 => 'trzy',
					 4 => 'cztery',
					 5 => 'pięć',
					 6 => 'sześć',
					 7 => 'siedem',
					 8 => 'osiem',
					 9 => 'dziewięć');                          
 
 $n = array( 10 => 'dziesięć',
 					 11 => 'jedenaście',
					 12 => 'dwanaście',
					 13 => 'trzynaście',
					 14 => 'czternaście',
					 15 => 'piętnaście',
					 16 => 'szasnaście',
					 17 => 'siedemnaście',
					 18 => 'osiemnaście',
					 19 => 'dziewiętnaście');                          

	$d = array( 0 => ',',
						  1 => 'dwadzieścia',
						  2 => 'trzydzieści',
						  3 => 'czterdzieści',
						  4 => 'piećdziesiąt',
						  5 => 'sześćdziesiąt',
						  6 => 'siedemdziesiąt',
						  7 => 'osiemdziesiąt',
						  8 => 'dziewięćdziesiąt');
						  
	$s = array(0 => '',
						 1 => 'sto',
						 2 => 'dwieście',
						 3 => 'trzysta',
						 4 => 'czterysta',
						 5 => 'pięćset',
						 6 => 'sześćset',
						 7 => 'siedemset',
						 8 => 'osiemset',
						 9 => 'dziewięćset');
						 
	$g = array(  0 => array (
									1 => 'tysiąc',
									2 => 'tysiące', 
									3 => 'tysięcy'),
							1 => array	(
									1 => 'milion',
									2 => 'miliony',
									3 => 'milionów'));


i wziąłem się za sam kod:


function slowny_zapis($liczba){

$dl = strlen ($liczba);
	
	for ($i=0; $i< div($dl-1,3); $i++){

		$t1 = copy($t, strlen($t)-2,3);

// tu jest pierwszy problem

                        delete($t,strlen($t)-2,3); 

// tu jest pierwszy problem

                         for ($j=1; $j<3-strlen($t1); $j++){
							
				$t1='0'.$t1;
							
						if ($t1=='000') continue
						
						if ($t1=='001') 
						
							$sl = slow($t1).$g[$i][1].$sl;
									
						else{
									
							if (($t1[3]  > 2 ) && ($t1[2]!=1))
							           
                                                                           $sl=slow($t1).$g[$i][2].$sl;
							else			
				                                       
                                                                           $sl=slow($t1).$g[$i][3].$sl;
					               }
			}	
}				

  return trim($sl);

}


Nie wiem czy gdzieś jeszcze jest problem z tą funkcją, ponieważ nie moge ruszyć z nią bez tego co oznaczyłem.

Czy ktoś już zmagał się z odobną funkcją ??
0

copy($t, strlen($t)-2,3);

spróbuj zamienić na:

substr($t, -3);

a delete to musisz też chyba pokombinować z substr (text = do miejsca ucięcia i od miejsca ucięcia + 1 do końca)

lub
http://4programmers.net/faq.php?id=794

1 użytkowników online, w tym zalogowanych: 0, gości: 1