Autor | Zpráva | ||
---|---|---|---|
MyShare Profil |
#1 · Zasláno: 29. 1. 2015, 14:37:07
Zdravím,
na úvod upozorňujem v php som začiatočník-samouk :) potrebujem pomôcť s generovaním čísiel v php tak aby výsledok bol xxxx-xxxx-xxxx-xxxx Neviem ako to dať dokopy pozeral som aj google aj php.net ale nenašiel som presne to čo potrebujem. Môj pokus: <?php $random_number = intval( "0" . rand(1,9) . '-' . rand(0,9) . '-' . rand(0,9) . '-' . rand(0,9) . '-' . rand(0,9) ); // random(ish) 5 digit int print($random_number); ?> Všetky Ďakujem za odpoveď. |
||
juriad Profil |
Výsledkem nemá být číslo, ale řetězec.
Ty x značí libovolnou číslici od 0 do 9? Třeba to jde takto (od PHP 5.3): preg_replace_callback('/x/', function($matches) {return rand(0, 9);}, 'xxxx-xxxx-xxxx-xxxx'); |
||
MyShare Profil |
#3 · Zasláno: 29. 1. 2015, 14:48:27
juriad:
Ďakujem presne čo som potreboval |
||
Dan Charousek Profil |
#4 · Zasláno: 29. 1. 2015, 14:58:45
Tohle je moc konkrétní, jestli jsou na všech místech 4místná číslá, tak můžeš 4x vygenerovat náhodné číslo od 1000 do 9999 a slepit je. Další možností by bylo generovat náhodně číslo po čísle a po x-tém čísle vložit separátor:
<?php function getRandString($chars, $length, $groups = null, $groupsSeparator = "") { $groups = empty($groups) ? $length : $groups; $resultArray = array(); $string = ""; for($a = 1; $a <= $length; $a++) { $string .= $chars[rand(0, count($chars) - 1)]; if($a % $groups == 0) { $resultArray[] = $string; $string = ""; } } return implode($groupsSeparator, $resultArray); } echo getRandString(range(0,9), 16, 4, "-"); ?> juriadův příklad bude pro čísla asi nejjednodušší. |
||
MyShare Profil |
#5 · Zasláno: 30. 1. 2015, 09:10:19
juriad:
Ešte som sa ta chcel spýtať prečo je v tom kóde ($matches) keď nieje nikde uvedené čo ten kód znemená? Myslím tým, že nemal by kód vyzerať potom takto? $matches = niečo sem; preg_replace_callback('/x/', function($matches) {return rand(0, 9);}, 'xxxx-xxxx-xxxx-xxxx'); Dúfam, že sa pochopíme. Nejde mi to do hlavy tak sa radšej poinformujem. |
||
Joker Profil |
#6 · Zasláno: 30. 1. 2015, 09:28:32
MyShare:
„Myslím tým, že nemal by kód vyzerať potom takto?“ Neměl, $matches je vstupní parametr funkce. Hodnotu $matches pokaždé doplní ten preg_replace_callback. Pro začátečníka může být preg_replace_callback trochu složitější na pochopení. |
||
Keeehi Profil |
#7 · Zasláno: 30. 1. 2015, 10:51:26
MyShare:
preg_replace_callback potřebuje, abychom mu dodali funkci s jedním parametrem. Proto tam je. Nás ale nezajímá, co nám preg_replace_callback posílá, protože mu chceme vždy vrátit jen náhodné číslo. A když nás to nezajímá, tak s tou proměnnou nepracujeme a proto se nikde neobjevuje. |
||
Časová prodleva: 9 let
|
0