[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: случайные числа
kenscl12
Привет всем.
проблема возникла, недопонимаю немного. для скрипта решил написать функцию.
задаешь переменную функции - она дает ей случайное значение в интервале от 0 до (кол-ва элементов в массиве - 1 ). проблема в том что функция вместо одно числа, забивает в переменную целый ряд. речь о функции, которую я назвал rdm.
получается резтат на выходе например:
1231243. пвнпвнр . Колво согласных : 7 .
а должно быть:
3 (например 3, не важно главное одно случайное число) . пвнпс . Колво согласных : 5
итак текст проги:

<html><body>

<
form action="" method="POST">
<
textarea rows="10" cols="40" name="dannie">
</
textarea>
<
input type="submit" name="DoGo" value="Запустить программу"> <br />
</
form>

<?php

function
netglasnim($st) { //функция удаляет гласные из введенного текста
$st = strtr($st, array(
'а'=>"" , 'е'=>"", 'и'=>"" , 'у'=>"" , 'ы'=>"" , 'э'=>"" , 'ю'=>"" , 'я'=>"", 'й'=>""));
return $st;
}

function rdm($zna4enie) { //выставляет рандомный номер строке
mt_rand(0, count($dannie) - 1);
$zna4enie = mt_rand();
return ($zna4enie);
}

$DoGo = !empty( $_POST['DoGo'] ) ? $_POST['DoGo'] : NULL; //инициализая переменных
$dannie = !empty( $_POST['dannie'] ) ? explode(';', $_POST['dannie']) : NULL;

if (!empty($dannie)) { //собстно сама обработка данных формы.
for ($i=0; $i <= count($dannie) - 1 ; $i++ ) {
echo rdm($i) . ". введено слово : " . netglasnim("$dannie[$i]") ;
$kolvoznakov = strlen(netglasnim(trim("$dannie[$i]")));
echo " ;Колво согласных :$kolvoznakov </br>";

//на выходе получаем согласные буквы из введенного текста + колво согласных букв для каждой строчки

}

}




?>
</body></html>


не вникайте в то, зачем эта программа нужна, это так для того чтобы материал проработать.



Спустя 10 минут, 42 секунды (5.02.2012 - 23:43) asokol написал(а):
mt_rand(0, count($dannie) - 1);
$zna4enie = mt_rand();
return ($zna4enie);

return mt_rand(0, count($dannie) - 1);
И есть ли смысл создавать ради этого функцию?

Спустя 8 минут, 58 секунд (5.02.2012 - 23:52) kenscl12 написал(а):
приоритет не в рациональности, а в том чтобы поработать с функциями и со всем с чем можно.)

Спустя 1 час, 27 минут, 57 секунд (6.02.2012 - 01:20) wplounge написал(а):
function rdm($zna4enie) {                          //выставляет рандомный номер строке
mt_rand(0, count($dannie) - 1);
$zna4enie = mt_rand();
return ($zna4enie);
}

По поводу поработать с функциями:
1. Зачем вы передаете в ф-цию параметр $zna4enie, который потом не используете, а просто переписываете вот здесь $zna4enie = mt_rand(); заново?
2. Вы вызвали функцию mt_rand() два раза:
в первый раз с параметрами mt_rand(0, count($dannie) - 1);
во второй раз без, причем во второй раз сохранили результат этой ф-ции (без параметров (0, count($dannie) - 1)) в переменную $zna4enie.
Естественно получится ерунда, поскольку mt_rand() без параметров выдает случайное число от 0 до нескольких миллиардов.
Правильнее было бы написать вот так:
$zna4enie = mt_rand(0, count($dannie) - 1);

3. Как правильно заметил asokol, не надо городить огород там, где можно обойтись одной строчкой.




_____________
Если бы господь бог не хотел бы чтобы человек мастурбировал, он сделал бы его руки короче
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.