|
|
|
| Приведу вам фрагмент программы
<?
if(count(glob("wbook/*.dat"))) # Если количество файлов с расширением .dat не равно нулю
{
foreach(glob("wbook/*.dat") as $path) # Проходим по каждому файлу
{
$f = fopen($path,"rt"); # Открываем текущий обрабатываемый файл
$users_stdata_read = fread($f,1000); # Извлекаем строку
$users_person = explode("|",$users_stdata_read,19); # Создаем массив данных, где в каждой ячейке хранится значение, считанное из файла. Всего значений 19, разделенных символов '|'
# Создаем массив $dataUsers, который должен накапливать данные по id ($users_person[0]) идентификатору файла
$dataUsers = array(
$users_person[0] => array('name' => $users_person[1], 'surname' => $users_person[2], 'otchestvo' => $users_person[3], 'age' => $users_person[4], 'year-live' => $users_person[5]
, 'icq' => $users_person[13], 'email' => $users_person[14])
);
# Дальше идет код ...
fclose($f);
}
}
?>
|
Проблема в том, что в массиве $dataUsers накапливаются только последние данные. Одним словом все время происходит перезапись их
Допустим у меня есть 3 файла. Программа их считывает. И вот в этом массиве должны находиться данные из этих 3 - ех файлов,
где $users_person[0], идентификатор записи, считанный из файла
Но происходит все совсем наоборот. В этот массив записываются данные только из последнего считываемого файла. Остальные, предыдущие данные почему-то
перезаписываются. Может быть я создаю каждый раз заного массив $dataUsers ?
Вот данные в массиве $dataUsers, после окончания обработки всех файлов
<?
Array # вывод массива $dataUsers
(
[2] => Array
(
[name] => 1
[surname] => 2
[otchestvo] => 3
[age] => 4
[year-live] => 5
[icq] => Нет данных
[email] => Нет данных
)
)
?>
|
Как видно, в массиве $dataUsers записались данные только из последнего считывемого файла. Всего файлов было 2
Данные из 2-ого файла почему-то перезаписались на данные из 1-ого файла
Подскажите как это исправить ? | |
|
|
|
|
|
|
|
для: Sl
(16.02.2007 в 09:37)
| |
<?
$dataUsers = array();
if(count(glob("wbook/*.dat"))) # Если количество файлов с расширением .dat не равно нулю
{
foreach(glob("wbook/*.dat") as $path) # Проходим по каждому файлу
{
$f = fopen($path,"rt"); # Открываем текущий обрабатываемый файл
$users_stdata_read = fread($f,1000); # Извлекаем строку
$users_person = explode("|",$users_stdata_read,19); # Создаем массив данных, где в каждой ячейке хранится значение, считанное из файла. Всего значений 19, разделенных символов '|'
# Создаем массив $dataUsers, который должен накапливать данные по id ($users_person[0]) идентификатору файла
$dataUsers[$users_person[0]] = array('name' => $users_person[1], 'surname' => $users_person[2], 'otchestvo' => $users_person[3], 'age' => $users_person[4], 'year-live' => $users_person[5]
, 'icq' => $users_person[13], 'email' => $users_person[14])
);
# Дальше идет код ...
fclose($f);
}
}
print_r($dataUsers);
?>
|
| |
|
|
|
|
|
|
|
для: Trianon
(16.02.2007 в 10:19)
| | Спасибо, помогло =)
А в чем была моя ошибка ? Я создавал каждый раз новый массив ? | |
|
|
|
|
|
|
|
для: Sl
(16.02.2007 в 10:49)
| | да. Затирая при этом предыдущий.
$var = ... затирает имеющееся значение. | |
|
|
|
|
|
|
|
для: Trianon
(16.02.2007 в 10:53)
| | Теперь понятно. Еще раз спасибо =) | |
|
|
|