Forum Webscript.Ru

Программирование => PHP => Тема начата: ljets от 30 Июня 2005, 01:14:16

Название: Передача txt в массив
Отправлено: ljets от 30 Июня 2005, 01:14:16
Имеется такой .txt:

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

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

Name[ ]
Age[ ]
City[ ]

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

Спасибо за помощь.
Название: Передача txt в массив
Отправлено: hanslinger от 30 Июня 2005, 02:10:52
[p]file_get_contents[/p] или [p]file[/p]
[p]explode[/p]
Название: Передача txt в массив
Отправлено: ljets от 30 Июня 2005, 02:30:31
Спасибо hanslinger!

Вот, наваял:

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

Это оказалось даже проще, чем я думал!
Название: Передача txt в массив
Отправлено: hanslinger от 30 Июня 2005, 03:19:44
Лучше так

foreach ($list as $line) list($arr[\'name\'][],$arr[\'age\'][],$arr[\'city\'][])=explode("|",$line);
Название: Передача txt в массив
Отправлено: Меняздесьдавнонет от 30 Июня 2005, 07:20:59
Лучше так

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

=)

ljets, а если серьёзно, то не забудь, что кроме названия города у тебя в массиве будет ещё и перевод строки
Название: Передача txt в массив
Отправлено: ljets от 30 Июня 2005, 12:09:54
Круто!

Как бы теперь рассортировать получившийся массив по городам, так чтобы каждый город сам был массивом?...
Название: Передача txt в массив
Отправлено: Меняздесьдавнонет от 30 Июня 2005, 12:42:01
пройтись в цикле по массиву и добавлять элементы в новый массив, с нужной тебе структурой
Название: Передача txt в массив
Отправлено: ljets от 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, только вот как?
Название: Передача txt в массив
Отправлено: ljets от 30 Июня 2005, 21:19:22
Сделал при помощи вот такой хитроумной конструкции:


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


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