IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Веб-программирование (http://www.imho.ws/forumdisplay.php?f=29)
-   -   Fget или/и Array, подогнать код. (http://www.imho.ws/showthread.php?t=130224)

Viroman 05.03.2008 14:29

Fget или/и Array, подогнать код.
 
Здравствуйте, форумчане.
У меня тут код чтения из файла
$file = "myfile.txt";
$fd = fopen($file "r");

while ($buffer = fgets($fd, 4096))
{ мой кода тут... }
собственно до сюда всем наверное всё понятно, теперь вопрос или что посоветуете. Хочу вместо чтения из файла сделать чтение из массива, при том с наименьшими подгонами кода. Следовательно
создаю массив, где полностью содержание x-файла. Но в массиве, понятное дело, текст построчный, следовательно по типу while хочу в этом массиве также построчно считывать информацию, есть ли такая команда для массивов, которая бы построчно считывала бы из массива информацию, а не целиком, как есть... То бишь аналог fgets для массива..

добавлено через 7 минут
Добавлено, или как опция можно было бы массив разбить на несколько подмассивов, где каждая строка была бы отдельным массивом. Но как, не знаю..

Saruman 05.03.2008 14:32

Код:

$myfile = file('myfile.txt');
foreach ($myfile as $line) {
echo $line;
}


Viroman 05.03.2008 15:08

Saruman, вы меня чуть неверно поняли, не хочу я из файла читать. Я сам создаю предварительно массив, в котором содержание файла, и хочу, чтобы из этого массива можно было бы читать построчно, а не целиком.. То есть, или есть такая команда в пхп, которая бы это делала, или же я сам должен содержимое массива разбить на подмассивы, где каждый подмассив, это одна строка...
Ещё раз повторюсь, то был всего лишь пример, как то делает команда фгетс, и я хочу примерно её аналог для массива, я не хочу из файла читать, а из массива построчно..

$var = preg_split("/[ ]+/", $myvar);
Кто поможет, как обозначить перенос строки? В данном случае указаны пробелы, в подмассивы попадают все значения, пробел в качестве делителя.. А как перенос строки, всё обыскал, найти не получилось :(

Кажись так $var = preg_split("/[\n]+/", $myvar);

Saruman 05.03.2008 15:21

Цитата:

Сообщение от Viroman (Сообщение 1529318)
Я сам создаю предварительно массив, в котором содержание файла, и хочу, чтобы из этого массива можно было бы читать построчно, а не целиком.. То есть, или есть такая команда в пхп, которая бы это делала, или же я сам должен содержимое массива разбить на подмассивы, где каждый подмассив, это одна строка...

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

Viroman 05.03.2008 15:40

Оно то и делает почти что надо, но функция file сама их загоняет построчно в массив, ладно уж, я сам всё сделал :)

$arrayfile = array('myarray' => '
мой построчный текст
вот такой,
как мне оно надо..
и так хочу по строкам обрабатывать
');
$arrayfilesplitted = preg_split("/[\n]+/", $arrayfile['myarray']);

while (list( ,$buffer ) = each($arraytreefilesplitted))
{
мой код тут, точнее он чужой..
}
Я же говорил, мне чужой код надо подгонять, а я это хотел сделать с минимальными изменениями.. и получилось..
Всем спасибо.

Hubbitus 05.03.2008 17:23

Цитата:

Сообщение от Viroman (Сообщение 1529318)
$var = preg_split("/[ ]+/", $myvar);
Кто поможет, как обозначить перенос строки?

$var = preg_split("/[\n\r]+/", $myvar);

добавлено через 5 минут
Цитата:

Сообщение от Viroman (Сообщение 1529346)
$arrayfile = array('myarray' => '
мой построчный текст
вот такой,
как мне оно надо..
и так хочу по строкам обрабатывать
');
$arrayfilesplitted = preg_split("/[\n]+/", $arrayfile['myarray']);

А зачем тогда массив-то ассоциативный? Чего не строка простая исходно:
PHP код:

$file 'мой построчный текст
вот такой,
как мне оно надо..
и так хочу по строкам обрабатывать
'
;
$arrayfilesplitted preg_split("/[\n\r]+/"$file); 

Если уверены что переносы строк *NIX'овые, "\n" (если не уверены, то первый мой самый вариант будет универсален), то можно вообще без регулярных выражений:
PHP код:

...
$arrayfilesplitted explode("\n"$file


Viroman 05.03.2008 17:38

Цитата:

А зачем тогда массив-то ассоциативный? Чего не строка простая исходно:
Потому что параметры из массива $_POST берутся :) потому нужен был код по работе с массивом, а не со строкой, то я тоже и без того умею :)


Часовой пояс GMT +4, время: 03:41.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.