Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zamiana liczby na wyrazy
Forum PHP.pl > Forum > Gotowe rozwiązania
nota-bene
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
delorian
[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.
jono
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...
nota-bene
Działa :-)

Wielkie dzięki :-))

n-b
spenalzo
php Początkujący ~> Skrypty
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.