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

асс

Мой дом здесь!
Регистрация
13 Окт 2006
Сообщения
762
Реакции
230
Добрый день товарищи.
Суть такова, есть код в нутри цикла



PHP:
for($i=0;$i < 100;$i++){  
$file=array();
$file=file('Gen/city.txt');
$size_temp=sizeof($file);
$city= $file[mt_rand(0,$size_temp-1)];

}


так вот у меня в файле есть 500 строчек, как мне сгенерировать уникальный список
из 100 слов чтоб небыло повторов?

В общем надо чтоб все 100 $i < 100 запусков цикла выдавали только новое уникальное имя, из имеющихся( 500 или 1000 тут нет ограничения строк.)


есть идея брать имя которое уже юзалось и ожить в текстовик, затем при повторном проходе искать совпадение в файле, куда сохранили предыдущие записи,
если имя есть то пропускать если нет то записывать.


Или посоветуете что нить боле разумное


Использование базы пока не расматриваю.
Благодарю за советы.
 
PHP:
$file=file('Gen/city.txt');
for($i=0;$i<100;$i++){
$rndCity = array_splice ( $file , rand(0,length($file)-1), 1);
echo $rndCity[0];
}
PS Не проверял. Но что-то вроде этого
 
PHP:
$file=file('Gen/city.txt');
for($i=0;$i<100;$i++){
$rndCity = array_splice ( $file , rand(0,length($file)-1), 1);
echo $rndCity[0];
}
PS Не проверял. Но что-то вроде этого

Строка $rndCity = array_splice ( $file , rand(0,length($file)-1), 1); Parse error: syntax error, unexpected ';' in Y:\home\x.php on line 7
ошибка
 
Строка $rndCity = array_splice ( $file , rand(0,length($file)-1), 1); Parse error: syntax error, unexpected ';' in Y:\home\x.php on line 7
ошибка
странно, такое впечатление, что несоответствие открывающих/закрывающих скобок. Но не могу найти как конкретно...
попробуй функцию length() заменить на sizeof() или count()
заработался, функции length() в списке стандартных не существует
 
length не подсвечивается, тоесть работает как то не так
обычно функции подсвечиваются у меня.

recasher2k12, точно проблема в length он не работает.
А ехе походу я накосячил тем что и запись и сбор строк делал в нутри цикла.

тоетсь тут цикл $sh .=" тут текст и тут же запись.

Надо был вынести запись за пределы цикла
или убрать .

Щас попробую
 
Ну принцип там прост как два пальца:
До цикла он читает файл в массив.
В цикле он удаляет из массива один рандомный элемент функцией array_splice(), которая в свою очередь возвращает удаленный элемент. Его мы и используем.
Так как в массиве этого элемента уже нет, повторно он в выдачу не попадет.
 
Но разве он помнит при втором проходе цикла то что было при первой итерации

Код:
for($i=0;$i<100;$i++){
 
$filme=file('Gen/imena_mushin.txt');
$rndCitym = array_splice ( $filme , rand(0, sizeof($filme)-1), 1);
$nik= $rndCitym[0];
 
}
 
Но разве он помнит при втором проходе цикла то что было при первой итерации

Код:
for($i=0;$i<100;$i++){
 
$filme=file('Gen/imena_mushin.txt');
$rndCitym = array_splice ( $filme , rand(0, sizeof($filme)-1), 1);
$nik= $rndCitym[0];
 
}

Так не помнит.

А вот так запомнит:
Код:
$filme=file('Gen/imena_mushin.txt');
 
for($i=0;$i<100;$i++){
$rndCitym = array_splice ( $filme , rand(0, sizeof($filme)-1), 1);
$nik= $rndCitym[0];
 
}
 
Отлично, то что надо. Благодарю Вас за помощь.
По сути у меня тож уники давал но там проблема была в том что он не правильно набирал

выходило типа так
12
1235
123456
1234567

Тепрь нормально.
 
Назад
Сверху