Перейти к содержимому

Сервис обмена электронных валют


Работа с масивами.. Вывод списка из файла

#1 Banderas

Banderas
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1
0

Отправлено 28 Февраль 2009 - 11:50

Начал учить масивы, и вот в книге написан код:
<?

$f = fopen("file.txt", "rt") or die ("ERROR");

while (!feof($f))
{
$File[] = fgets ($f,50);
}
fclose ($f);

?>


создал файл file.txt
Bodya
Vitya
Roma
Dima

Где и что я неправильно прописаЛ? У меня ничего не выводет :)

 

 

  • 0


#2 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 01 Март 2009 - 12:33

Banderas,

1) Кто за тебя будет обрабатывать получившийся массив, ты его сформировал, но не вывел на экран.
<?php

$f = fopen("file.txt", "rt") or die ("ERROR");

while (!feof($f)) {
$File[] = fgets ($f,50);
}

fclose ($f);

print_r($File)
?>

2) Учти, что если строка будет больше 50 байт, у тебя будет обработана не полностью.
fgets() побайтовое считывание строки. Так же можно использовать функцию file(), она построчно сома в массив считывает.
3) Если программси уважает себя, он всегда будет форматировать код и делать его более легким для чтения. Всегда нужно ставить отступы. Стилей форматирования не так уж и мало, нужно придерживаться какого-то своего.
  • 0

#3 Banderas

Banderas
    Topic Starter
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1

Отправлено 01 Март 2009 - 12:47

У меня вывело

Array ( [0] => Bodya [1] => Vitya [2] => Roma [3] => Dima )

Специально попробовал... У меня file.txt весил 24 байта, я сделал 74, но оно все выводит...
Как здесь применить file ()?
Поищу статьи про грамотность програмирования )))
  • 0


#4 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 01 Март 2009 - 12:58

У меня вывело...

Так конечно я просто вам распечатал представление массива с помощью print_r()
Как видите
echo $File[0]; // Bodya
echo $File[1]; // Vitya
echo $File[2]; // Roma
echo $File[3]; // Dima


Как здесь применить file ()?

<?php

$f = fopen("file.txt", "rt") or die ("ERROR");
$File = file($f);
fclose ($f);

print_r($File)
?>

  • 0

#5 Banderas

Banderas
    Topic Starter
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1

Отправлено 01 Март 2009 - 15:10

а как сделать что бы не прописывать
echo $File[0];
echo $File[1];

Выводилось все в файл.тхт

???

Написал только что бы выводило количество строк
<?

$f = fopen ("file.txt", "rt") or die ("ERROR");
while (!feof($f))
{
$File[] = fgets ($f, 50);
}

fclose($f);

for ($i=0; $i<count($File); $i++);

echo "$i\n";
?>

  • 0


#6 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 01 Март 2009 - 20:23

С fgets()
<?php

$f = fopen("file.txt", "rt") or die ("ERROR");
while (!feof($f)) {
$File[] = fgets($f, 50);
}
fclose($f);

for($i = 0; $i < count($File); $i++) echo "Элемент [{$i}] - {$File[$i]}<br />";
?>

C file()
<?php

$f = fopen("file.txt", "rt") or die ("ERROR");
$File = file($f);
fclose($f);

foreach($File as $key => $value) echo "Элемент [{$key}] - {$value}<br />";
?>


Как видишь я использовал 2 вида циклов. В for() надо указывать количество и перебирать. Предлагаю для перебора массива использовать цикл foreach().
Полная запись:
foreach([Массив] as [ассоциация_или_номер] => [значение])

Сокращенная запись:
foreach([Массив] as [значение])

  • 0

#7 Banderas

Banderas
    Topic Starter
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1

Отправлено 01 Март 2009 - 22:07

Спасибо, теперь я понял =)
Я хоть что то понял, сам for написал - уже гордость берет ))))
Хотел спросить, когда нужно ставить { } ? Ато я их удалил и все нормально...
for($i = 0; $i < count($File); $i++) echo "Элемент [{$i}] - {$File[$i]}<br />";

Например зачем тут [{$i}] ставить [] и {} ? Без них прекрасно все работает...
Так же $File[$i] - так тоже пашет...


????
  • 0


#8 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 02 Март 2009 - 00:53

Я всегда привык все переменные в распечатке в {}
К примеру вот 2 строки
echo "Моё имя $FIO["name"]"; // не работает
echo "Моё имя {$FIO["name"]}"; // работает

  • 0

#9 Banderas

Banderas
    Topic Starter
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1

Отправлено 02 Март 2009 - 01:15

Думаю поюзать :) Ещё раз спасибо. Хочу получить което упражнение. Попробовать свои силы. Напишите кто-задание какое-то по масивам :)
  • 0


#10 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 02 Март 2009 - 20:39

Ну раз так хочешь... Ждём твоего решения, задачки не сложные:

1) Есть массив
$massiv = array(10, 0, 5, 35, 40, 0, 15, -1, -6, 0, 5);

Убрать из массива все отрицательные и нулевые элементы, не прибегая к созданию нового массива. Затем вывести получившийся на экран.

2) Массив пользователей, нужно вывести на экран в виде.

N | Фамилия | Имя | Отчество

$USERS = array(
array('family'=>"Бешкеков", 'name'=>"Азбек", 'Ot4estvo'=>"Рувимович"),
array('family'=>"Ушлёпок", 'name'=>"Рамзес", 'Ot4estvo'=>"Акакиевич"),
array('family'=>"Масисин", 'name'=>"Василий", 'Ot4estvo'=>"Романович"),
array('family'=>"Бутылкин", 'name'=>"Вячеслвав", 'Ot4estvo'=>"Бутыркович")
);


3) Создать массив из n элементов и занести в него случайные числа, затем вывести его на экран в порядке возрастания чисел.

4) Есть ассоциативный массив, вывести данные по запрашиваемому ключу, ключ достаточно определять в начале скрипта в текстовой переменной.
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru