function и static и скорость работы

Статус
В этой теме нельзя размещать новые ответы.

D@nil

Постоялец
Регистрация
1 Окт 2006
Сообщения
340
Реакции
122
Здравствуйте подскажите

данный код будет оптимален для вывода случайной строки?

PHP:
function get_str(){
    static $strs;
    if(!isset($strs)) 
    $strs = file('strs.txt',FILE_IGNORE_NEW_LINES);
    return trim($strs[array_rand$strs)]);
}

Массив 1н раз читае6тся и далее хранится в памяти
 
Наиболее оптимально будет воспользоваться библиотечной функцией rand().
 
да, вполне оптимальное решение.
только после array_rand открывающая скобочка пропущена)

Добавлено через 4 минуты
Наиболее оптимально будет воспользоваться библиотечной функцией rand().
с чего бы так?
 
Потому, что любая встроенная функция, всегда будет работать быстрее самописной.
 
Потому, что любая встроенная функция, всегда будет работать быстрее самописной.
какая же из вышеучаствующих функций «самописная»?
или если ты имеешь ввиду саму get_str(), то интересно как же ты собираешься заменить её функционал функцией rand()?
 
Уважаемый, откройте глаза, функция, которую создает автор, перегружена ненужными действиями. Для того чтобы получить контент и рандомно вывести строку, нужно воспользоваться парой встроенных функций.
PS Мне меньше всего интересно спорить с Вами, я выразил свое мнение.
 
говоря А, говорите и Б. вы оспорили пример, не предоставив подтверждения своих слов. в последнем сообщении — повторно. опишите же, как должен выглядеть более оптимальный код на ваш взгляд.

з.ы.: это форум, выражая своё мнение вы уже в полушаге от спора.
 
функция, которую создает автор, перегружена ненужными действиями
Видемо вы не понимаете, как работает данная функция если сделали такое заключение.

Есть еще идея читать по строке из файла, а затем ее удалять.

или читать случайную строку из файла, указатель можно сдвинуть на стлучайную строку зная кол-во строк?
 
или читать случайную строку из файла, указатель можно сдвинуть на стлучайную строку зная кол-во строк?

Можно и не читать весь файл, если памяти мало а файл большой.
Чтобы получить случайную строку из файла в котором строки неодинаковой длины, надо что-то типа такого

PHP:
$filename = 'file.txt'
$fp = fopen($filename,'r');
fseek($fp,rand(0,filesize($filename)));
fgets($fp);
if (feof($fp)) fseek($fp,0);
$str = fgets($fp); // случайная строка файла

Но если есть возможность прочитать весь файл в память, то конечно же array_rand() будет предпочтительнее.
 
Чтобы получить случайную строку из файла в котором строки неодинаковой длины, надо что-то типа такого
Интересная идея, а можешь описать как данный код работает?

Еще есть идея, перемешать строки в файле и просто брать строку а потом ее удалять, как думаете это будет менее ресурс затратно?
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху