Это требование к обработке файлов. Какие:
- читать «группы» записей, 5 в этом случае
- превратить их в ассоциативный массив
- добавить их в массив PHP.
Подход:
- Процесс записи в группах заданного размера
- Обеспечить «место» для обработки начало «группы»
- обеспечить место для обработки конца группа
Поскольку это «вложенные» группы, я использую технику «читать вперед».
Complete code at pastebin.com
'многословно? возможно :)
Код:
определения данных:
/**
* Data definition
*/
define('SOURCE_FILE', __DIR__ . '/Q31609517-data.asc');
define('MAX_LINE_LEN', 128);
// data group details
define ('DATA_GROUP_SIZE', 5);
// allow easy changing of data names and changing the input order
$itemNames = array('asc_id', 'start_time', 'end_time', 'action_1', 'action_2');
обрабатывать данные:
/**
* Process the file
*/
$sourceFile = fopen(SOURCE_FILE, 'r');
$currentLine = fgets($sourceFile, MAX_LINE_LEN); // always use 'read ahead';
// process the file
while (!feof($sourceFile) && $currentLine !== false) {
// start group processing
$currentGroupLine = 0;
$currentGroup = array();
while ($currentGroupLine < DATA_GROUP_SIZE) {
$currentGroup[$itemNames[$currentGroupLine]] = trim($currentLine);
$currentGroupLine++;
$currentLine = fgets($sourceFile, MAX_LINE_LEN); // always use 'read ahead';
}
// process complete group
$outData[] = $currentGroup;
}
fclose($sourceFile);
тестовых данных (5 линий на группу):
1.
00:00:00:00
00:00:00:01
Hi
2.
00:00:37:15
00:00:38:16
Hiiii
How Are you?
3.
00:00:40:01
00:00:41:19
Fine.
Выход:
Array
(
[0] => Array
(
[asc_id] => 1.
[start_time] => 00:00:00:00
[end_time] => 00:00:00:01
[action_1] => Hi
[action_2] =>
)
[1] => Array
(
[asc_id] => 2.
[start_time] => 00:00:37:15
[end_time] => 00:00:38:16
[action_1] => Hiiii
[action_2] => How Are you?
)
[2] => Array
(
[asc_id] => 3.
[start_time] => 00:00:40:01
[end_time] => 00:00:41:19
[action_1] => Fine.
[action_2] =>
)
)
И что вы получаете прямо сейчас –
Какой у вас текущий код? – MatsLindh
- это ваш файл (тот, у кого есть данные), сохраненный с расширением .asc? –