Рандом

ivanforpw

Новичок
Здравствуйте, мне нужно вывести рандомную строку из файла(для случайного показа баннеров), и я сделал такой вот код, все работает, но через раз или два вылезает Notice(Notice: Undefined offset: -1 in D:\WWW\myportfolio\sites\yalon\index.php on line 41 и Notice: Undefined offset: 1 in D:\WWW\myportfolio\sites\yalon\index.php on line 41, строка эта
PHP:
list($link1, $advnt1)=split(":::","$data2[$i2]");
)

PHP:
$data2=@file("databases/advertisements1.dat");
$data2=@array_reverse($data2);
$ncol2=count($data2);
rand(0, $ncol2);
$min = rand(0, $ncol2)-1;
$max = rand(0, $ncol2)+1;
for ($i2=$min; $i2<$max; $i2++){
    if($i2>$ncol2-1)break;
    list($link1, $advnt1)=split(":::","$data2[$i2]");
    echo "<div class=\"advnt\"><a href=\"$link1\">$advnt1</a></div>";
}
Подскажите, пожалуйста, где я допустил недочёт, или как можно убрать Notice, кажется у хостинга нет файла конфигурации индивидуально для каждого.
 

Фанат

oncle terrible
Команда форума
а что ты собрался писать в этот файл конфигурации?
 

ivanforpw

Новичок
error_reporting(E_ERROR && E_PARSE);
п.с. возможно не так обозвал, но лично сам не сталкивался, когда необходимо было убирать отображение предупреждений, поэтому и спрашиваю, думаю, лучше будет устранить саму ошибку
 

Фанат

oncle terrible
Команда форума
Скажи пожалуйста.
Вот если, скажем, ты схватишься рукой за раскалённую железяку, то какой из вариантов ты выберешь?
1. Отдернуть руку.
2. Принять обезболивающее и продолжать держаться?
 

ivanforpw

Новичок
Думаю, первое, если вы про исправление ошибки, то я не очень понимаю, что именно она предупреждает...
Пишет, что переменная 1 пустая, как и -1, но это просто цифры, возможно не так выразил переменные $min и $max
 

Фанат

oncle terrible
Команда форума
то есть ошибки надо исправлять только если ты их понял?
а если не понял, то просто заглушить, чтобы глаза не мозолили?
 

ivanforpw

Новичок
Но я же остановился на варианте исправить, по правде, просто не люблю закрывать глаза на ошибки. Но где здесь недочёт? Скорее всего, он порой рандомно выдаёт 3, плюсует 1 и получает 4, чего нет, и показывает ошибку, но без суммирования единицы, я не смогу окружить нужную, случайную и единственную строчку
 

Фанат

oncle terrible
Команда форума
что значит - окружить?
и, кстати - а зачем тебе цикл?
открою тебе маленький секрет - для обращения к элементу массива цикл совсем не обязателен
 

radioheaded

PHP нуб
Я пару минут пытался понять, что именно вы хотели сделать этим жутким кодом. Сдался. Это как читать на английском в стиле МГИМО финишд: отдельные слова понятны, но все в целом какой-то бред.

Начать можно с попытки понять, почему вы решили, что при таком коде у вас $min будет меньше, чем $max.
 

ivanforpw

Новичок
цикл для вывода list в последовательности и для переноса информации из файла в массив...
 

ivanforpw

Новичок
Я пару минут пытался понять, что именно вы хотели сделать этим жутким кодом. Сдался. Это как читать на английском в стиле МГИМО финишд: отдельные слова понятны, но все в целом какой-то бред.

Начать можно с попытки понять, почему вы решили, что при таком коде у вас $min будет меньше, чем $max.
поправил
PHP:
$rand = rand(0, $ncol2);
$min = $rand-1;
$max = $rand+1;
 

ivanforpw

Новичок
PHP:
$data2=@file("databases/advertisements1.dat");
$random = array_rand($data2, 1);
list($link1, $advnt1)=split(":::","$random");
echo "<div class=\"advnt\"><a href=\"$link1\">$advnt1</a></div>";
Так он вообще не выводит ничего
 

ivanforpw

Новичок
Ладно, идея была просто в выводе одной любой строчки из файла через скрипт
PHP:
$data2=@file("databases/advertisements1.dat");
$data2=@array_reverse($data2);
$ncol2=count($data2);
for ($i2=0; $i2<$ncol2; $i2++){
if($i2>$ncol2-1)break;
list($link1, $advnt1)=split(":::","$data2[$i2]");
echo "<div class=\"advnt\"><a href=\"$link1\">$advnt1</a></div>";}
 

radioheaded

PHP нуб
PHP:
$data2=@file("databases/advertisements1.dat");
$random = array_rand($data2, 1);
list($link1, $advnt1)=split(":::","$random");
echo "<div class=\"advnt\"><a href=\"$link1\">$advnt1</a></div>";
Так он вообще не выводит ничего
«Я буду внимательно читать документацию к функциям. Я буду внимательно читать документацию к функциям. Я буду внимательно читать документацию к функциям.» — держите, дарю.
 

Фанат

oncle terrible
Команда форума
покажи хоть, как решил.
опять небось десяток ненужных функций наворотил
 

ivanforpw

Новичок
PHP:
$data2=@file("databases/advertisements1.dat");
$ncol2=count($data2)-1;
$i2 = rand(0, $ncol2);
list($link1, $advnt1)=split(":::","$data2[$i2]");
echo "<div class=\"advnt\"><a href=\"$link1\">$advnt1</a></div>
 
Сверху