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.
我试着阅读上面的文件,但我没有得到所需的结果。我需要result in:
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:53:02
[end_time] => 00:00:53:20
[action_1] => Fine.
[action_2] =>
)
)
这是一个简单的开始,假设您的输入总是与上面相同的格式。对于错误检查和更好的输入格式灵活性,您可以对此进行许多改进。
$myarray = array();
$file = file('file.asc');
while ($line = array_shift($file))
{
if (preg_match('/'d+'.$/', $line))
{
$myarray[] = array(
'asc_id' => trim($line),
'start_time' => trim(array_shift($file)),
'end_time' => trim(array_shift($file)),
'action_1' => trim(array_shift($file)),
'action_2' => trim(array_shift($file)),
);
}
}
print_r($myarray);
这是'文件处理'要求。这是:
- 读取一组记录,在本例中为5
- 将它们转换为关联数组 将它们附加到PHP数组中。
方法:
- 按指定大小的组处理记录
- 为处理"组"的开始提供一个"位置"
- 提供处理组末尾的位置
由于这些是"嵌套"组,我使用了"预读"技术。
完整的代码在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] =>
)
)