[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: содержание файла в массив...
grandtriumpher
всем здр!

помогите плиз...

в общем, задачка такова:

есть файл "file.txt" который содержит, например, 5 имен.
файл записан таким образом:
саша
вася
гена
миша
марик

все имена надо загнать в массив а потом вывести их рандомально.

я написал вот так. но что-то не клеется:

$file = file_get_contents('file.txt');
$file = explode("\n", $file);
$file = array_rand($file, 3);
echo($file[2]);

заранее всем спасибо!



Спустя 17 минут, 26 секунд (12.02.2010 - 21:48) lethal написал(а):
$file = file('file.txt');
foreach($file as $str)
{
$mass[]=$str; // заполнение массива
}

Спустя 2 минуты, 9 секунд (12.02.2010 - 21:50) Adil написал(а):
<?php
$file = file("file.txt");
print $file[rand(0,count($file)-1)];
?>

Спустя 20 минут, 39 секунд (12.02.2010 - 22:10) grandtriumpher написал(а):
так как я написал тоже собирает массив.

но как рандомально вывести имена?

допустим у меня список из 100 имен.
мне надо загнать их в массив и рандомально вывести на экран 10 из них!

как это сделать?

Спустя 6 минут, 42 секунды (12.02.2010 - 22:17) Adil написал(а):
<?php
$file = file("a.txt");
shuffle($file);

for ($i=0;$i<10;$i++){
print $file[$i]."<br />\n";
}
?>

Спустя 2 минуты, 9 секунд (12.02.2010 - 22:19) grandtriumpher написал(а):
спасибо! smile.gif

Спустя 8 минут, 14 секунд (12.02.2010 - 22:28) grandtriumpher написал(а):
кстати, как это сделать не трогая функцию shuffle?

можно ли оставить массив как он есть и вытаскивать
из него имена с помощью array_rand?

Спустя 24 минуты, 19 секунд (12.02.2010 - 22:52) Adil написал(а):
можно

Спустя 3 минуты, 2 секунды (12.02.2010 - 22:55) grandtriumpher написал(а):
лол!

а как? smile.gif

Спустя 1 час, 51 минута, 1 секунда (13.02.2010 - 00:46) twin написал(а):
Nezabivaemiy
Так хорошо все начиналось и сам на цикл свалился...
Есть же array_slice()

grandtriumpher
Можно конечно и обкакаться так жидко, что штаны не испачкать... Надо оно?

Спустя 1 час, 28 минут, 3 секунды (13.02.2010 - 02:14) Adil написал(а):
twin ну он по-любому циклом пройдется через массив, чтобы вывести данные..

Спустя 34 минуты, 10 секунд (13.02.2010 - 02:48) twin написал(а):
Для чего? Раз массив перемешан, взять первые 10 значений не обязательно циклом же...
Вообще эта вся хрень в идеале должна выглядеть примерно так (не проверял)
<?php
$file = array_map('trim',file("a.txt"));
shuffle($file);

print_r(array_slice($file, 0, 10));
?>

ну или если в строку потом - implode()

Спустя 11 минут, 56 секунд (13.02.2010 - 03:00) Adil написал(а):
Незнаю.. Лично я не люблю print_r() использовать в конечном варианте, а лишь в стадии разработки.

Спустя 40 минут, 21 секунда (13.02.2010 - 03:40) Nikitian написал(а):
Если без shuffle

$arr=file('file.txt');
$show=10;
$max=sizeof($arr);
if($max>=$show)
{
$rnd=array();
while(sizeof($rnd)<$show)
{
$item=mt_rand(0,$max);
if(!in_array($item,$rnd))
{
$rnd[]=$item;
echo$arr[$item].'<br/ >';
}
}
}

else
echo'Меньше, чем надо вывести';
Жутко неоптимальный код, но вы ведь хотели шашечки.

Спустя 8 часов, 55 минут, 21 секунда (13.02.2010 - 12:36) grandtriumpher написал(а):
twin
если бы не надо было, я бы не спрашивал...

п.с. ты на себе испробовал так жидко обосраться что штаны не испачкал?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.