Внимание! В связи с устареванием топика эта страница была взята из кэша.
|
Sterx +
Зарегистрирован: 08.12.02
Сообщения: 2657
|
Добавлено: 16/08/04 в 20:48
|
|
файл data.php
Код: | desc1|url1 desc2|url2 . . . . descN|urlN
|
скрипт
Код: | <? //rotator $iunum=15; $iu="data.php"; //random $fp = fopen($iu, "r"); $iu_in = fread($fp, filesize($iu)); fclose($fp); $iuline = explode("\n", $iu_in); $is=sizeof($iuline); $i=$is-2; //srand((double)microtime()*1000000); $spoint=rand(0,$i); $rpoint=rand(1,1); //outdisplay for ($e=0;$e<$iunum;$e++) { if (($spoint+$rpoint+$e)>=($spoint+$iunum)) { $rcorr=$iunum; } else {$rcorr=0;} $iudata = explode("|", $iuline[$spoint+$rpoint+$e-$rcorr]); echo "<a href=$iudata[1] class=a2>$iudata[0]</a><br>"; } ?>
|
трабл в чем - периодически выкидывает пустые строки, но при первом запуске - всегда 15 рандомно выбранных строк в чем дело могет быть?[/quote]
|
K началу
|
|
|
Twister
Зарегистрирован: 26.09.03
Сообщения: 40
|
Добавлено: 16/08/04 в 22:07
|
|
По идее он у тебя выкидывает последнюю строку, - проверь в конце файла пустой перевод строки.
|
K началу
|
|
|
eugenyZ
Зарегистрирован: 28.11.02
Сообщения: 153
|
Добавлено: 16/08/04 в 22:30
|
|
Была именно такая ж фигня вседствие либо 0, либо количества по максимуму (цифер-не значения естественно) в цикле... также шло наложение темпа при обнулении и запуске нового цикла..
честно говоря чё то слишком мудро чё ты написал вверху ....
читаем файл в массив, узнаём максимум элементов (строк - $maxx) далее , на вопр как сгенерировать несколько случайных и разных между собой чисел? У мня например рабочий вариант таков <? $maxx=10; // -- числа будут от 1 до $maxx $maxn=5; // -- всего $maxn чисел в массиве ( или сколько вешать в граммах ) $x=array(); // здесь будет массив наших чисел $tmp=array(); // временный массив for ($i=0; $i<$maxn; $i++) { do { $a=rand(1,$maxx); } while(isset($tmp[$a])); $tmp[$a]=1; $x[]=$a; $r.="$a,"; // эту строку можно удалить } unset($tmp); // вывод чисел на экран: for ($i=0; $i<count($x); $i++) echo "$x[$i] "; ?> $x[$i]-преобразовать на свой вкус и цвет собственно строку массива . ...надеюсь помогло
|
K началу
|
|
|
Sterx +
Зарегистрирован: 08.12.02
Сообщения: 2657
|
Добавлено: 16/08/04 в 22:43
|
|
Grey: это первое, на что я обратил внимаение. но не оно eugenyZ: сейчас попробую, отпишу
|
K началу
|
|
|
webboxxx
Зарегистрирован: 06.03.03
Сообщения: 405
|
Добавлено: 16/08/04 в 23:10
|
|
Код: | <?php mt_srand(make_seed());
$fname='data.php'; //название файла $cnt = 5; //максимальное количество элементов для вывода
// Читаем файл $data=@file_get_contents($fname); $data=explode("\n",$data);
// Перемешиваем элементы for($j=count($data)-1;$j>0;$j--) { if (($i = mt_rand(0,$j))<$j) {$swp=$data[$i]; $data[$i]=$data[$j]; $data[$j]=$swp;} }
//Выводим for($x=0;$x<$cnt;$x++) { if($data[$x]) { $tmp=explode('|',$data[$x]); echo '<a href='.$tmp[1].' class=a2>'.$tmp[0].'</a><br>'; } }
function make_seed() { list($usec, $sec) = explode(' ', microtime()); return (float) $sec + ((float) $usec * 100000); } ?>
|
|
K началу
|
|
|
webboxxx
Зарегистрирован: 06.03.03
Сообщения: 405
|
Добавлено: 16/08/04 в 23:15
|
|
eugenyZ писал: | ... на вопр как сгенерировать несколько случайных и разных между собой чисел? ... |
кстати чтобы сгенерить несколько разных произвольных чисел нужно просто создать массив с числами, скажем от 0 до 100, потом их перемешать между собой, и вывести первые 10 к примеру. В принципе для того чтобы перемешать эл-ты массива есть функция shuffle, но что то она как то не очень перемешивает хорошо, поэтому я рекомендую пользоваться вот тем вариантом кода, который я дал. Так помоему немного элегантнее, чем твой вариант
|
K началу
|
|
|
Sterx +
Зарегистрирован: 08.12.02
Сообщения: 2657
|
Добавлено: 16/08/04 в 23:41
|
|
thx именно то
|
K началу
|
|
|
Текстовая реклама в форме ответа Заголовок и до четырех строчек текста Длина текста до 350 символов Купить рекламу в этом месте! |
Внимание! В связи с устареванием топика эта страница была взята из кэша.
|