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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Чтение из файла, Помогите 
:(
    Опции темы
Гость_Андрей
Дата 28.10.2003, 12:56 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Мне надо начать читать файл с 2 строки, как это сделатьconfused.gif
Файл:
Код
вас|1
Петя|2
Сергей|4
Саша|9

  Вверх
Dr.Death
Дата 28.10.2003, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 950
Регистрация: 15.7.2003
Где: Волгоград

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



$lines=file("test.txt");
for($i=1;$i<count($lines);$i++)
{
print $lines[$i];
}


--------------------
Жизнь коротка, чтобы быть в ней слабым.© Арнольд Шварцнеггер
PM MAIL WWW ICQ   Вверх
IZ@TOP
Дата 28.10.2003, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


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

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



$line = file('file.txt'); // Загоняем в массив строки из файла с данными

И читаем

for( $i = 1; $i < count($line); $i++ ) {
//Делаем то что надо ...
}


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Solid
Дата 3.11.2003, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 3.11.2003
Где: Дома.

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



Это слишком медленный метод ;)
Лучше всего:

Код
$fp = fopen($filename, r);
$array = explode("\r\n", fread($fp, filesize($filename)));
for($i=1; $i<count($array); $i++) {
echo $array[$i];
}

PM MAIL WWW ICQ   Вверх
IZ@TOP
  Дата 4.11.2003, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


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

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



Solid, интересный код smile.gif Но быстрее будет явно так:
Код

$fp = fopen( $filename, "r" );
$array = explode( "\r\n", fread($fp, filesize( $filename ) ) );
$i = 0;
while( $i < sizeof( $array ) ) {

   echo $array[$i];

}


rolleyes.gif


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Solid
Дата 4.11.2003, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 3.11.2003
Где: Дома.

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



Ну не знаю, не знаю. В C/С++ это может быть ещё и имеет разницу (while и for), а вот в в php, помоему, уже разница некакая. Хотя может быть, может быть.
PM MAIL WWW ICQ   Вверх
IZ@TOP
Дата 4.11.2003, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


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

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



Может быть! Я конечно не тестировал, но пишут что while намного быстрее.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
arial
Дата 4.11.2003, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 772
Регистрация: 11.3.2003
Где: Архангельская обл .

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



Ну и как вариант предлагаю использовать не \r\n, а только \n. Не часто найдешь счастливца с WIN.


--------------------
Есть люди, в которых живет Бог. Есть люди, в которых живет дьявол. А есть люди, в которых живут только глисты. (Ф. Раневская)
PM ICQ   Вверх
Гость_Андрей
Дата 4.11.2003, 19:07 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Спасибо
  Вверх
IZ@TOP
Дата 4.11.2003, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


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

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



arial, http://www.mp3.ru - счастливец с WIN biggrin.gif


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Secandr
Дата 5.11.2003, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

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



В пхп есть разница меэду for, while, foreach. Но заметно это на больших массивах.
P.S. Ещё join можно использовать smile.gif


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
IZ@TOP
Дата 5.11.2003, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


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

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



Secandr, join это для соединения массива в одну строку? Вроде ...


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Secandr
Дата 5.11.2003, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

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



Код
$fp = fopen( $filename, "r" );
echo join('',explode( "\r\n", fread($fp, filesize( $filename ) ) ));
Так тоже можно. Правда я не знаю что explode делает.



--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
IZ@TOP
Дата 5.11.2003, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


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

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



Secandr, explode( SEPARATOR, string ) разбивает строку string на массив.
Пример:
Строка - $string = "name|password|mail ";
Separator $sep = "|";

$l = explode( $sep, $string );

Выходной массив

$l = array(
0=>"name",
1=>"password",
2=>"mail"
);

Вот такая вот функция, работает намного быстрее split'a. Советую в любых случаях где она может быть применима использовать именно ее.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Гость_Андрей
Дата 5.11.2003, 20:33 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата
Secandr, explode( SEPARATOR, string ) разбивает строку string на массив.
Пример:
Строка - $string = "name|password|mail ";
Separator $sep = "|";
Я это и хотел от вас увидеть, спасибо!
  Вверх
Unregistered
Дата 5.11.2003, 20:35 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А если у на файл
Код
123123213
вас|1
Петя|2
Сергей|4
Саша|9

Да, именно такой, я не ошибся, первая строка не подходит по правилам, но надо читать со строчки вас|1. Как быть в таком случаеconfused.gif
  Вверх
Secandr
Дата 5.11.2003, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

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



удали первую строку из массива. Только боюсь опять с perl'oм попутать.
Iz@top>> Спасибо за коментарий.


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
Crot
Дата 3.2.2004, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Хочу узнать.
Возможно ли чтение из двоичного файла переменной типа double?
Если да, то как это сделать?
PM MAIL WWW ICQ   Вверх
Vaulter
Дата 3.2.2004, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



split это аналог explode но для регулярных выражений...;)


--------------------
PM MAIL WWW ICQ   Вверх
Sardar
Дата 3.2.2004, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

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



Crot
Цитата
Хочу узнать.
Возможно ли чтение из двоичного файла переменной типа double?
Если да, то как это сделать?

built-in средствами нельзя, но можно:
1) использовать (un)serialize() - для (де)сериализации и записи/чтения их в/из файл(а) стандартным для PHP способом
2) найти плагин реализующий эти функции, твой код станет не переносимым.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Crot
Дата 4.2.2004, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Что-то я не понял... :(

Я, конечно, хочу чтобы код был переносимым.

Приведите, пожалуйста, пример того, как это сделать.

Вот, допустим дан некоторый файл,
Код
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|   |   |   | X | X | X | X | X | X | X | X |   |   |   |   |   |   |   |   |   |   |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+

в котором я должен пропустить 3 байта и, затем, считать 8 байтов в переменную $d, представляющую число типа double.
Как это реализовать?

PM MAIL WWW ICQ   Вверх
Sardar
Дата 4.2.2004, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

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



PHP не работает с бинарным представлением double. Вместо этого можно:
- переписать прогу так, что бы она писала/читала double в виде строки: 0.123, PHP сам обратит строку в double(можно через doubleval()).
- можно самому прочесть 11 битов экспоненты и 52 бита мантиссы, умножить мантиссу на 2 в степени экспоненты. Если все еще есть желание то здесь можно почитать об этом.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.1007 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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