Avatar
Josef Kuchař (Pepa489):

Ahoj lidi, teď řeším problém jak např. s čísla 5 udělat 005 nebo 54 na 054, snad jste to pochopily.
Díky :D

Odpovědět 22.6.2014 18:14
2x piš, jednou debuguj
Avatar
Vojtěch Pospíchal:

Změříš si délku stringu, podle toho kolik obsahuje znaků, tolik tam přidáš nul. Tj. pokud obsahuje 1 znak, přidáš dvě nuly, pokud dvě, tak jednu atd...
Počet znaků změříš pomocí:

$pocetZnaku = strlen($proměnáCislo);

Přidávání nul vyřešíš v switch. Tj:

switch ($pocetZnaku) {
    case "1":
        echo "00".$proměnáCislo;

    case "2":
        echo "0".$proměnáCislo;

    case "3":
        echo $proměnáCislo;

}

Pokud potřebuješ více znaků, jednoduše uprav switch.

Editováno 22.6.2014 18:31
 
Nahoru Odpovědět  -3 22.6.2014 18:30
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Vojtěch Pospíchal
Jan Vargovský:

Kdybys to měl dělat na 50000 znaků, tak budeš dělat jako otrok 50000 case? :)

 
Nahoru Odpovědět 22.6.2014 18:44
Avatar
Odpovídá na Jan Vargovský
Vojtěch Pospíchal:

Ano, pokud bych to měl dělat na více čísel, tak to zefektivním. Zeptal se na několik málo čísel, takže nevím, proč bych měl server zatěžovat zbytečnými výpočty.
EDIT:// O Satíkovo funkci jsem netušil. Zajímavé na co všechno jsou dostupné funkce.

Editováno 22.6.2014 19:39
 
Nahoru Odpovědět 22.6.2014 19:37
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Vojtěch Pospíchal
Jan Vargovský:

Určitě jde vytvořit string z 1 znaku o nějaké délce :) a bylo by to určitě rychlejší než switchovat.

 
Nahoru Odpovědět 22.6.2014 19:44
Avatar
Odpovídá na Jan Vargovský
Vojtěch Pospíchal:

Ano, přiznávám, mohlo mě napadnout, že bude v tomto případě lepší využít str_pad. Moje chyba. I přesto, pokud se jedná o takto malý počet čísel, je jedno, jakou možnost využiješ. Plus v případě switch můžeš upravit, jaké znaky se přidají v jakém případě výrazně lehčí cestou. Dejme tomu, že potřebuješ, aby se při dvou existujících znacích v proměnné nepřidala 0 ale 1. Nebude lehčí si to jedno ze tří čísel ošetřit ve switchi?

 
Nahoru Odpovědět 22.6.2014 19:50
Avatar
Michal Žůrek (misaz):

řešil jsem to tak, že jsem převedl číslo na string a pak cyklem dopřídaval potřebný počet nul.

Nahoru Odpovědět  ±0 22.6.2014 20:06
Nesnáším {}, proto se jim vyhýbám.
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Vojtěch Pospíchal
Jan Vargovský:

Jedno je to možná tobě, ale radši bych měl v kódu volání jedné funkce než nějakou "složitou" konstrukci, která je 5x delší.

 
Nahoru Odpovědět 22.6.2014 20:07
Avatar
Odpovídá na Jan Vargovský
Vojtěch Pospíchal:

Složitou? O co je přehledných 5 řádků složitější než jedna nesrozumitelně pojmenovaná funkce?

 
Nahoru Odpovědět  -1 22.6.2014 20:12
Avatar
Odpovídá na Vojtěch Pospíchal
Luboš Běhounek (Satik):

"O co je přehledných 5 řádků složitější než jedna nesrozumitelně pojmenovaná funkce?"

  • Nechtěl bych programovat v projektu, kde se používá v nějaké větší míře tenhle přístup, kde bych na takový kód narážel každou chvíli,... :)

Funkce pro padding stringů jsou ve spoustě jazyků v defaultní knihovně a určitě je při čtení cizího kódu pro mě příjemnější vidět jednu celkem logicky pojmenovanou (i když pravda, že pojmenovávací konvence zrovna v PHP jsou nestejnorodé) funkci než zkoumat, co asi dělá těch 5 řádků kódu :)

Editováno 22.6.2014 20:37
Nahoru Odpovědět  ±0 22.6.2014 20:34
:)
Avatar
mkub
Redaktor
Avatar
Odpovídá na Josef Kuchař (Pepa489)
mkub:

ked chces pridat na zaciatok nulu, tak sa da napr. takto:

$cislo_int = 5;
$cislo_str = "0" . $cislo_int;
echo $cislo_str;

tu sda vyuziva spajanie retazcov a kedze jazyk PHP je netypovy, automaticky pri spajani retazcov si najskor prevedie numericku hodnotu na string a nasledne retazce spoja, cim vznikne nova hodnota, tentoraz uz typu string

 
Nahoru Odpovědět 23.6.2014 1:38
Avatar
Josef Kuchař (Pepa489):

Díky všem, už sem to vyřešil tou funkcí str_pad :D

Nahoru Odpovědět 23.6.2014 14:27
2x piš, jednou debuguj
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 13 zpráv z 13.