| 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: 12 let
|
|||
0