Как сделать, чтобы при каждом обращении к РНР скрипту, он выводил по две новые строки из текстового файла?

Как выводить по 2 строки из файла не рандомно, а по порядке, хоть сначала, хоть с конца?
в файле 20 строк и нужно выводить по две при перезагрузке
иначе неработает и не выводит по две строки если не ставить рандомно, а это не совсем хорошо иногда бывает выводит две одинаковые строки

$arr = file("reviews.dat");

shuffle($arr);

$res = array_slice($arr, 0, 2);

foreach ($res as $str) {

	echo $str;

}


$arr = file("reviews.dat");

shuffle($arr);

for($i=0; $i<2; $i++) {

	echo $arr[$i];	
}
  • Вопрос задан
  • 164 просмотра
Пригласить эксперта
Ответы на вопрос 3
delphinpro
@delphinpro Куратор тега PHP
frontend developer
shuffle($arr) - перемешивание массива. Если нужно по порядку, то просто убрать это.
Ответ написан
Anastasia2306
@Anastasia2306
PHP-разработчик.
нужно использовать array_slice без shuffle

Если ты хочешь выводить строки с конца файла, то нужно будет использовать array_slice после array_reverse:
Вывод по две строки с начала файла:
$arr = file("reviews.dat");
$res = array_slice($arr, 0, 2);

foreach ($res as $str) {
    echo $str;
}


Вывод по две строки с конца файла:
$arr = file("reviews.dat");
$arr = array_reverse($arr);
$res = array_slice($arr, 0, 2);

foreach ($res as $str) {
    echo $str;
}
Ответ написан
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
Лучше оставить рандомный вывод.
Усилия, которые вы затратите на вывод по порядку, совершенно не стоят результата.
Если после одной перезагрузки выведутся те же две строчки - никто от этого не умрёт.

Вместо этой дурацкой затеи лучше потратьте время на изучение основ программирования.
И в частности, того факта, что РНР не запоминает состояние. Он не запоминает даже значения переменных, не говоря уже о позиции в файле, который он читал во время прошлого запроса.
Чтобы обеспечить последовательный вывод, надо где-то запоминать текущую позицию.
Это может быть, например, сессия. Но клиент может не поддерживать сессии. И тогда ваш скрипт будет выдавать ему всегда первые две строчки.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы