Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> РАНДОМ 
:(
    Опции темы
kilogram
Дата 11.5.2012, 15:31 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 19.3.2012

Репутация: -1
Всего: 0



Читаю тему случайные числа в книге, там такой пример, не работает чего-то.


Код

<?php

$ourfile = fopen("largetextfile.txt",'r');
for($i = 0; $s = fgets($ourfile,10000); $i++){
    if(mt_rand(0,$i) == 0) $line = $s;
}
echo $line;
?>


PM MAIL   Вверх
kilogram
Дата 11.5.2012, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 19.3.2012

Репутация: -1
Всего: 0



Объясните вот это действие:
Код
if(mt_rand(0,$i) == 0) $line = $s;


Непонятно, зачем присваивать переменную s? Что это дает?

Ещё, как можно выводить $line если он объявлен внутри цикла фора, а не за её пределами?
PM MAIL   Вверх
Aliance
Дата 11.5.2012, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Код не работает возможно потому, что у тебя нет файла largetextfile.txt или его содержимое задано не верно.
А возможно потому, что учебник плохой.

Цитата(kilogram @  11.5.2012,  17:25 Найти цитируемый пост)
Непонятно, зачем присваивать переменную s? Что это дает?

В цикле переменная один или несколько раз перезадается, при выполнении условия if, а затем при выходе из цикла печатается (по факту печатается переменная $s, которая удовлетворила условию if последняя).

Цитата(kilogram @  11.5.2012,  17:25 Найти цитируемый пост)
как можно выводить $line если он объявлен внутри цикла фора, а не за её пределами? 

В php переменные объявляются в месте их первого включения в скрипт.

PM MAIL WWW ICQ Skype   Вверх
Sentox
Дата 11.5.2012, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


как то так
**


Профиль
Группа: Участник
Сообщений: 392
Регистрация: 27.1.2009
Где: Зимбабве

Репутация: 7
Всего: 7



Стоит использовать нормальную IDE с дебагером, очень помогает в поиске ошибок.
PM MAIL   Вверх
Guedda
Дата 15.5.2012, 07:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 13
Всего: 78



Sentox, о чем вы говорите? Какие ошибки? Тут простейший код, который вполне себе может показать на выходе ничего, если рандом не случится.

kilogram, если хотите, чтобы Вам помогли, опишите проблему подробнее. Что именно не работает?


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Sentox
Дата 15.5.2012, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


как то так
**


Профиль
Группа: Участник
Сообщений: 392
Регистрация: 27.1.2009
Где: Зимбабве

Репутация: 7
Всего: 7



Цитата(Guedda @ 15.5.2012,  07:28)
Sentox, о чем вы говорите? Какие ошибки? Тут простейший код, который вполне себе может показать на выходе ничего, если рандом не случится.

Позволю не согласиться.
Начинать учиться пошаговой отладке стоит да же с примитивных примеров. Иначе получаются потом любители "вечных" var_dump();, не признающих ни какие средства отладки.
В данном примере, так же быстрее находится ошибка в отладке, при условии что топикстартер знает как это делается, без лишних созданий тем и с большим опытом.
PM MAIL   Вверх
Guedda
Дата 15.5.2012, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 13
Всего: 78



Цитата(Sentox @  15.5.2012,  10:31 Найти цитируемый пост)
Начинать учиться пошаговой отладке стоит 

По-моему мнению, начинать надо учиться не пошаговой отладке, а чтению кода. Это залог здорового кодинга и уменьшения ошибок в коде. А отладчик - это лишь дополнительный инструмент для программиста. Естественно, игнорировать отладчики не нужно, но и уповать на них всегда тоже не стоит (так как под интерпретируемые языки хорошие отладчики - большая редкость).


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1333 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.