PHP srand въпрос за елементарен скрипт. |
|||||
|
|||||
|
|
|||||
![]() ![]() |
Здравейте, Колеги. Имам следния въпрос към следния скрипт. CODE
Става въпрос за следното значи с srand генерирам случайно число за 24 часа и след това с rand го слагам след всяка стойност като числото трябва да е от 0 до 10. Въпроса ми е как да направя така че да декларирам предварително тези стойности за сила, защита и бързина и след това за различните имена да ги извиквам, но числата за всяко име трябва да е различно. Сега както съм показал работи както трябва да е, но ми се струва, че не е много правилно на всяка стойност за слагам rand(0, 10). Искам да декларирам променливите като: $pow = rand(0,10); // Power between 0 and 10 $def = rand(0,10); // Defence between 0 and 10 $spd = rand(0,10); // Speed between 0 and 10 Не знам след това как да задам така, че на всяко име те да са различни и да ги извиквам с <?php echo $pow; ?> и т.н Може ли някой да помогне ? |
||||
|
---------------------------
Потребител в Mytech.bg от: 07.10.11 |
|||||
|
|||||
|
|||||
|
|
|||||
![]() ![]() ![]() |
Здравей! Ето кода CODE
Поздрави! |
||||
|
---------------------------
Потребител в Mytech.bg от: 11.05.09 http://www.webxmedia.eu |
|||||
|
|||||
|
|
|||||
![]() ![]() |
Благодаря! Но нещо не работи, не изкарва никакви числа, а и като няма srand май няма да е за 24 часа. |
||||
|
---------------------------
Потребител в Mytech.bg от: 07.10.11 |
|||||
|
|||||
|
|
|||||
![]() ![]() |
Опитай така: CODE
|
||||
|
Това мнение е редактирано от Bibi на 07.10.2011 21:35
---------------------------
Потребител в Mytech.bg от: 15.01.06 |
|||||
|
|||||
|
|
|||||
![]() ![]() |
Понеже скрипта който предложихте на тръгна. Стана така: <?php $names = array("ivan", "dragan", "petkan", "pesho", "kiro"); $data = array(); srand(floor(time() / (60*60*24))); foreach($names as $name) { $data[$name] = array("power" => rand(0, 10), "defense" => rand(0, 10), "speed" => rand(0, 10)); } foreach($data as $name => $player) { echo "Player " . $name . " has power " . $player['power'] . ", defense " . $player['defense'] . " and speed . " . $player['speed'] . "<br />"; } ?> Но имам следния проблем. Понеже съм направил всеки играч на нов таб и трябва да спазя следната структура: <div id="tabber1" class="player"> <h2>Player #1</h2> <div class="Skills"> <ul> <li><label>Sila</label><span><em class="<?php echo rand(0, 10); ?>"></em></span></li> <li><label>Zashtita</label><span><em class="<?php echo rand(0, 10); ?>"></em></span></li> <li><label>Barzina</label><span><em class="<?php echo rand(0, 10); ?>"></em></span></li> </ul> </div> </div> И така за всеки играч поотделно. Може ли да кажеш в този вид как трябва да използвам скрипта, че да го вкарам както е сега (<?php echo rand(0, 10); ?>) само, че вместо rand да е навсякъде да използвам предварително зададените отгоре променливи. Може би трябва да ги викам с <?php echo $player['power']; ?> или ? Как е най-правилно? |
||||
|
---------------------------
Потребител в Mytech.bg от: 07.10.11 |
|||||
|
|||||
|
|
|||||
![]() ![]() ![]() |
Кодът на Bibi би трябвало да бъде това, което ти трябва, само трябваше да се поправи малко, тъй като имаше echo в последните елементи CODE
Това, което ти си предложил на всички имена задава произволна стойност при еднакъв интервал, което в първият ти вариант не беше така Поздрави! |
||||
|
---------------------------
Потребител в Mytech.bg от: 11.05.09 http://www.webxmedia.eu |
|||||
|
|||||
|
|
|||||
![]() ![]() |
Аз не разбирам какъв е проблемът? CODE
А примерът на blooddrainer не ти е сработил най-вероятно защото са ти изключени short-tags за php. |
||||
|
Това мнение е редактирано от Bibi на 08.10.2011 12:03
---------------------------
Потребител в Mytech.bg от: 15.01.06 |
|||||
|
|||||
|
|
|||||
![]() ![]() ![]() |
Аз не разбрах много добре каква е идеята на тези неща и кое трябва да е различно, но мисля, че ако правилно сме разбрали, сорс кода е на лице |
||||
|
---------------------------
Потребител в Mytech.bg от: 11.05.09 http://www.webxmedia.eu |
|||||
|
|||||
|
|
|||||
![]() ![]() |
Последно го направих така: <?php $names = array("ivan", "dragan", "petkan", "pesho", "kiro"); $data = array(); srand(floor(time() / (60*60*24))); foreach($names as $name) { $data[$name] = array("power" => rand(0, 10), "defense" => rand(0, 10), "speed" => rand(0, 10)); } echo"<div id="tabber1" class="player">"; foreach($data as $name => $player) { echo"<h2>$name</h2> <div class="Skills"> <ul> <li><label>Sila</label><span><em> $player[power] </em></span></li> <li><label>Zashtita</label><span><em> $player[defense] </em></span></li> <li><label>Barzina</label><span><em> $player[speed] </em></span></li> </ul> </div>"; } echo"</div>"; ?> Искам, ако може да го направя в функция и да изчистя кода. Трябва да е така, че само където ми трябват числата да ги викам. Да се изчисти максимално кода за да се пише HTML кода в echo .. и т.н Някой може ли да помогне да стане колкото се може по-изчистено ? Благодаря! |
||||
|
Това мнение е редактирано от devtest на 08.10.2011 19:03
---------------------------
Потребител в Mytech.bg от: 07.10.11 |
|||||
|
|||||
|
|
|||||
![]() ![]() |
Ще се изкуша да се изкажа пак. Зарежи конкретния код и помисли по-отгоре за нещата. Като изключим първите редове, където се създава масива с данните, всичко надолу си е чисто view - т.е. то наистина е html и е добре да си остане такова, а не да се прави на функция и да се пише през php с echo. Така че за мен това е "по-изчистеното": в досегашната си функция създаваш само данните и в края й инклудваш отделно php или phtml файлче, в което само на места имаш echo. След време, ако ти се наложи да работиш с templates или framework, много добре ще усетиш какво казвам. Но за сега го приеми на доверие. |
||||
|
---------------------------
Потребител в Mytech.bg от: 15.01.06 |
|||||
|
|||||
|
|
|||||
![]() ![]() |
@Bibi, благодаря за съвета. На мен честно казано първия вариант който беше с първоначално деклариране на srand за време и после само където искам да има рандом число за слагам <?php echo rand(0, 10); ?> ми се вижда най-изчистен. <?php srand(floor(time() / (60*60*24))); ?> Ime 1 Sila: <?php echo rand(0, 10); ?> zdr: <?php echo rand(0, 10); ?> Barzina: <?php echo rand(0, 10); ?> Ime 2 Sila: <?php echo rand(2, 6); ?> Zashtita:<?php echo rand(2, 6); ?> Barzina:<?php echo rand(2, 6); ?> Ime 3 Sila: <?php echo rand(0, 10); ?> Zashtita: <?php echo rand(0, 10); ?> Barzina: <?php echo rand(0, 10); ?> Единствено ме притеснява, че имам 10 играча с по 3 стойности за рандом числа което значи, че трябва да сложа <?php echo rand(0, 10); ?> на 30 места. Понеже не съм много наясно с PHP-то реших, че така ще натоварва повече сайта. Реално така ли се получава или спокойно мога да ползвам с rand на повечко места и няма да е проблем? Така ми се вижда и най-изчистено без масив и т.н. Другия вариант е да сложа кода който последно показах. Благодаря! |
||||
|
---------------------------
Потребител в Mytech.bg от: 07.10.11 |
|||||
|
|||||
|
|
|||||
![]() ![]() ![]() |
Здравей! Bibi е права за абсолютно всичко, така че свиквай с отделянето на логиката от шаблоните, тъй като сега имаш 30 пъти echo, но при по-голям проект може да ти се наложи да имаш 30 * 30 пъти echo. Също така разгледай кода, който тя ти предложи, там са използвани цикли, нещото, което прави програмирането и приятно и лесно! Поздрави! |
||||
|
---------------------------
Потребител в Mytech.bg от: 11.05.09 http://www.webxmedia.eu |
|||||
|
|||||
|
|
|||||
![]() ![]() |
Добре, но какво ще стане, ако играчите станат 100? Или ако се наложи да ги взимаш от база? Иначе за php-то няма разлика - натоварването ще е същото при всички описани варианти. rand() пак се вика еднакво много пъти, без значение дали в цикъла или после. Но това няма как да се избегне. |
||||
|
Това мнение е редактирано от Bibi на 09.10.2011 12:12
---------------------------
Потребител в Mytech.bg от: 15.01.06 |
|||||
|
|||||
|
|
|||||
![]() ![]() |
Играчите винаги ще са 10 и винаги ще имат 3 стойности. Да разбирам, че ако си ползвам 30 пати <?php echo rand(0, 10); ?> не е никакъв проблем. Иначе ми се вижда по-усложнено, а е нещо много просто. Просто един статичен HTML с имена където след всяко име трябва да сложа едно рандом число това е всичко. Ще ползвам този начин без масив и т.н. Няма да сбъркам, ако съм ви разбрал правилно. Който и от 2та начина да ползвам ще е еднакво за сайта? |
||||
|
---------------------------
Потребител в Mytech.bg от: 07.10.11 |
|||||
|
|||||
|
|
|||||
![]() ![]() ![]() |
Да, но е по-добре да свикваш с работата с шаблони, тъй като са неизменна част от уеб програмирането. Поздрави! |
||||
|
---------------------------
Потребител в Mytech.bg от: 11.05.09 http://www.webxmedia.eu |
|||||
|
|||||
| 4 посетители са активни в този форум (0 потребители и 4 гости) | |
|
Активни потребители:
---
|
|
|
| |













Този отговор е маркиран като удовлетворителен!