Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zamiana liczby na wyrazy
nota-bene
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 3.10.2003

Ostrzeżenie: (0%)
-----


Witam

Przyznaję się bez bicia - jestem totalnym początkującym jezeli chodzi o php. Mam nadzieję, że ktoś mi pomoże z nastepującym problemem - potrzebuję funkcji, która zamieniałaby dowolną liczbę na nazwy poszczególnych cyfr z tej liczby. Czyli np. "11" - "jeden jeden". Oczywiście liczba może być dowolnych rozmiarów.

Z góry dzięki za pomoc.

n-b
Go to the top of the page
+Quote Post
delorian
post
Post #2





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 23.08.2003
Skąd: Olsztyn, Polska

Ostrzeżenie: (0%)
-----


[php:1:85b6fee0f6]

$wynik = "":
$cyfryslownie = array (0 => 'zero', 1 => 'jeden'); // i tak dalej

settype($twojaliczba,"string");

$tablicacyfrzliczby = explode ( "", $twojaliczba);

foreach ($tablicacyfrzliczby as $cyfra) {
$wynik .= $cyfryslownie[$cyfra]." ";
}

echo $wynik;
[/php:1:85b6fee0f6]

Nie testowałem, więc nie wiem czy ruszy z miejsca, ale powinno.
Go to the top of the page
+Quote Post
jono
post
Post #3





Grupa: Zarejestrowani
Postów: 144
Pomógł: 0
Dołączył: 29.06.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


ewentualnie polecam teką moją starą funkcję:

[php:1:b29afd1db7]<?php
function drukuj($liczba = 0)
{
if($liczba < 1000000){
if($liczba == 0){$wyswietlane = 'zero';}
if($liczba > 100000){
$sto = TRUE;
$pisz = (int)$liczba / 100000;
$wyswietl = array(
'1' => 'sto',
'2' => 'dwieście ',
'3' => 'trzysta',
'4' => 'czterysta',
'5' => 'pięćset',
'6' => 'sześćset',
'7' => 'siedemset',
'8' => 'osiemset',
'9' => 'dziewięćset'
);
$wyswietlane .= "$wyswietl[$pisz] ";
$od = (int)$pisz;
$od = $od*100000;
$liczba = $liczba -= $od;
}


if($liczba > 1000){
$pisz = (int)$liczba /1000;
$doswietl = array(
'0' => 'tysięcy',
'1' => 'jeden tysięcy',
'2' => 'dwa tysiące',
'3' => 'trzy tysiące',
'4' => 'cztery tysiące',
'5' => 'pięć tysięcy',
'6' => 'sześć tysięcy',
'7' => 'siedem tysięcy',
'8' => 'osiem tysięcy',
'9' => 'dziewięć tysięcy');
if($pisz > 20&&(int)$pisz/10 !== $pisz/10){
$odejmuj = $pisz;
$b = $pisz;
$a = $pisz / 10;
$pisz = (int)$a * 10;
$c = $b - $pisz;
$dopisz = " $doswietl[$c]";
}
else{$odejmuj = $pisz;}
$wyswietl = array(
'1' => 'tysiąc',
'2' => 'dwa tysiące',
'3' => 'trzy tysiące',
'4' => 'cztery tysiące',
'5' => 'pięć tysięcy',
'6' => 'sześć tysięcy',
'7' => 'siedem tysięcy',
'8' => 'osiem tysięcy',
'9' => 'dziewięć tysięcy',
'11' => 'jedenaście tysięcy',
'12' => 'dwanaście tysięcy',
'13' => 'trzynaście tysięcy',
'14' => 'czternaście tysięcy',
'15' => 'piętnaście tysięcy',
'16' => 'szesnaście tysięcy',
'17' => 'siedemnaście tysięcy',
'18' => 'osiemnaście tysięcy',
'19' => 'dziewiętnaście tysięcy',
'10' => 'dziesięć',
'20' => 'dwadzieścia',
'30' => 'trzydzieści',
'40' => 'czterdzieści',
'50' => 'pięćdziesiąt',
'60' => 'sześćdziesiąt',
'70' => 'siedemdziesiąt',
'80' => 'osiemdziesiąt',
'90' => 'dziewięćdziesiąt',
'99' => 'jeden tysięcy'
);

if($sto == TRUE&&(int)$pisz == 1){$pisz = 99;}
$wyswietlane .= "$wyswietl[$pisz]$dopisz ";
$od = (int)$odejmuj;
$od = $od*1000;
$liczba2 = $liczba -= $od;
}
elseif($liczba < 1000){
$liczba2 = $liczba;}
if($liczba2 > 100){
$pisz = (int)$liczba2/100;
$wyswietl = array(
'1' => 'sto',
'2' => 'dwieście ',
'3' => 'trzysta',
'4' => 'czterysta',
'5' => 'pięćset',
'6' => 'sześćset',
'7' => 'siedemset',
'8' => 'osiemset',
'9' => 'dziewięćset'
);
$wyswietlane .= "$wyswietl[$pisz] ";
$od = (int)$pisz;
$od = $od*100;
$liczba3 = $liczba2 -= $od;
}
elseif($liczba2 < 100){
$liczba3 = $liczba2;}

if($liczba3 > 9){
if($liczba3 < 20){$pisz = $liczba3;}else{$pisz = (int)$liczba3/10;}

$wyswietl = array(
'2' => 'dwadzieścia',
'3' => 'trzydzieści ',
'4' => 'czterdziesci',
'4' => 'czterdzieści',
'5' => 'pięćdziesiąt',
'6' => 'sześćdziesiąt',
'7' => 'siedemdziesiąt',
'8' => 'osiemdziesiąt',
'9' => 'dziewięćdziesiąt',
'10' => 'dziesięć',
'11' => 'jedenaście',
'12' => 'dwanaście',
'13' => 'trzynaście',
'14' => 'czternaście',
'15' => 'piętnaście',
'16' => 'szesnaście',
'17' => 'siedemnaście',
'18' => 'osiemnaście',
'19' => 'dziewiętnaście'
);
$wyswietlane .= "$wyswietl[$pisz] ";
if($pisz < 10){
$od = (int)$pisz;
$od = $od*10;
$liczba4 = $liczba3 -= $od;}
else{$liczba4 = 0;}
}
elseif($liczba3 < 10){
$liczba4 = $liczba3;}



if($liczba4 >= 0){
$wyswietl = array(
'1' => 'jeden',
'2' => 'dwa',
'3' => 'trzy',
'4' => 'cztery',
'5' => 'pięć',
'6' => 'sześć',
'7' => 'siedem',
'8' => 'osiem',
'9' => 'dziewięć');
$w = $wyswietl[(int)$liczba4];
$wyswietlane .= "$w ";
}}
else {$wyswietlane = '<font color=red><b>BŁĄD!</b></font>Podana liczba nie może być odczytana. Funkcja może odczytać liczby <b>nie większe</b> niż 999999!';}
return $wyswietlane;
}
?>[/php:1:b29afd1db7]

przeczyta ci dowolną liczbę mniejszą od miliona...
Go to the top of the page
+Quote Post
nota-bene
post
Post #4





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 3.10.2003

Ostrzeżenie: (0%)
-----


Działa :-)

Wielkie dzięki :-))

n-b
Go to the top of the page
+Quote Post
spenalzo
post
Post #5





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


php Początkujący ~> Skrypty
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.08.2025 - 09:06