Задать вопрос
@SARCASM74

Как рандомно вывести строки из текстового файла по определенному ключу?

Добрый вечер, помогите пожалуйста нужно рандомно вывести 7 строк из файла по определенному ключу.

Есть текстовый файл с записями такого рода:

0103|busfor|12.10.20|Dm83
0104|blablacar|12.10.20|Dm12
0105|busfor|15.10.20|Dm24
0106|busfor|15.10.20|Df44
0107|gunsel|18.10.20|Dm76
0108|busfor|18.10.20|Df14
0109|busfor|18.10.20|Df22
0110|busfor|18.10.20|Df03
0111|busfor|18.10.20|Df11

И нужно рандомно вывести 7 записей по ключу к примеру "busfor"
  • Вопрос задан
  • 95 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 2
twobomb
@twobomb
$rows= file_get_contents("ваш файл.txt");
$rows = mb_split("\r\n",$rows);
$rows= array_values(array_filter($rows,function($e){return mb_split("\|",$e)[1] == "busfor";}));

$onlyUnique = true;//доставать только уникальные
$result = [];
for($i = 0; $i < 7 && count($rows) > 0;$i++){	
	$inx =rand(0,count($rows)-1);
	$result[] = $rows[$inx];
	if($onlyUnique)
		array_splice($rows,$inx,1);
}
var_dump($result);
Ответ написан
@Dark_Dante
Как то так
$elementQuantity = 7;
$searchString = 'busfor';
$fileName = 'filename'; //путь до файла

$filteredArray = array_filter( //возвращает массив, содержащий только строки с вхождением подстроки
    file($fileName), //читаем файл в массив построчно,
    fn (string $str): bool => str_contains($str, $searchString ),//фильтруем массив, оставляя только строки с искомым словом
);

shuffle($filteredArray); //перемешаем массив

$result = array_slice($filteredArray, 0, $elementQuantity);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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