Автор Тема: Передача txt в массив  (Прочитано 3639 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ljets

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 5
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Передача txt в массив
« : 30 Июня 2005, 01:14:16 »
Имеется такой .txt:

Глаша|24|Пенза
Даша|18|Воронеж
Недаша|17|Воркута

Необходимо перегнать это богатство в массив таким образом, чтобы получилось 3 массива вроде:

Name[ ]
Age[ ]
City[ ]

Подозреваю, что это возможно, но с реализацией затык, поскольку паки-паки PHP не владею.

Спасибо за помощь.

Оффлайн hanslinger

  • H2Oer
  • Ветеран
  • *****
  • Сообщений: 1148
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.orava.ru
Передача txt в массив
« Ответ #1 : 30 Июня 2005, 02:10:52 »
[p]file_get_contents[/p] или [p]file[/p]
[p]explode[/p]

Оффлайн ljets

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 5
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Передача txt в массив
« Ответ #2 : 30 Июня 2005, 02:30:31 »
Спасибо hanslinger!

Вот, наваял:

<?
$list file("list.txt");
for(
$i 0$i<count($list); $i++)
list(
$name[], $age[], $city[]) = explode("|"$list[$i], 3);
?>

Это оказалось даже проще, чем я думал!

Оффлайн hanslinger

  • H2Oer
  • Ветеран
  • *****
  • Сообщений: 1148
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.orava.ru
Передача txt в массив
« Ответ #3 : 30 Июня 2005, 03:19:44 »
Лучше так

foreach ($list as $line) list($arr[\'name\'][],$arr[\'age\'][],$arr[\'city\'][])=explode("|",$line);

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Передача txt в массив
« Ответ #4 : 30 Июня 2005, 07:20:59 »
Лучше так

foreach (file("list.txt"); as $line)  list($arr[\'name\'][],$arr[\'age\'][],$arr[\'city\'][])=explode("|",$line);

=)

ljets, а если серьёзно, то не забудь, что кроме названия города у тебя в массиве будет ещё и перевод строки

Оффлайн ljets

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 5
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Передача txt в массив
« Ответ #5 : 30 Июня 2005, 12:09:54 »
Круто!

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

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Передача txt в массив
« Ответ #6 : 30 Июня 2005, 12:42:01 »
пройтись в цикле по массиву и добавлять элементы в новый массив, с нужной тебе структурой

Оффлайн ljets

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 5
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Передача txt в массив
« Ответ #7 : 30 Июня 2005, 20:25:01 »
Voila! Спасибо RomikChef за подсказку!


foreach (file(\'list.txt\') as $line) list($arr[\'name\'][],$arr[\'age\'][],$arr[\'city\'][])=explode("|",$line);
$cities=array_unique($arr[\'city\']);
foreach ($cities as $j=>$k){
foreach($arr[\'subj\'] as $i=>$l)
if ($k==$l)
$sub[$j][]=array($arr[\'name\'][$i],$arr[\'age\'][$i]);
}


А вот как бы теперь так сделать, чтобы скажем Самара всегда была первым элементом этого массива? Подозреваю, что надо сделать этот элемент первым еще в массиве cities, только вот как?

Оффлайн ljets

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 5
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Передача txt в массив
« Ответ #8 : 30 Июня 2005, 21:19:22 »
Сделал при помощи вот такой хитроумной конструкции:


$cities
=array_unique($arr[\'city\']);
array_unshift($cities,"Самара");
$cities=array_unique($cities);


Но кажется мне, должен быть способ и поизящнее...

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28