Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: x na 00x

Aktivity
Avatar
Josef Kuchař - Pepa489:22.6.2014 18:14

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:22.6.2014 18:30

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
22.6.2014 18:30
Avatar
Nahoru Odpovědět
22.6.2014 18:35
https://www.facebook.com/peasantsandcastles/
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Vojtěch Pospíchal
Jan Vargovský:22.6.2014 18:44

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:22.6.2014 19:37

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ý
Tvůrce
Avatar
Odpovídá na Vojtěch Pospíchal
Jan Vargovský:22.6.2014 19:44

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:22.6.2014 19:50

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:22.6.2014 20:06

ř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
22.6.2014 20:06
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Vojtěch Pospíchal
Jan Vargovský:22.6.2014 20:07

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:22.6.2014 20:12

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

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

"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
22.6.2014 20:34
https://www.facebook.com/peasantsandcastles/
Avatar
mkub
Tvůrce
Avatar
Odpovídá na Josef Kuchař - Pepa489
mkub:23.6.2014 1:38

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:23.6.2014 14:27

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.