使用辅助数组创建数组

时间:2014-02-19 17:59:17

标签: php arrays

我正在使用PHP将固定宽度的文本文件导入数据库。

我已经有了代码工作,但我想提高它的效率,因此相同的代码可以处理多个(不同的)固定宽度的文本文件。

这就是我现在所拥有的:

$file_handle = fopen('fixy.txt', 'r');

while ($line = fgets($file_handle)) {
    $output[] = array(
        'title' => trim(substr($line, 0, 50)),
        'code' => trim(substr($line, 50, 5)),
        'date' => trim(substr($line, 55, 8)),
        'writer' => trim(substr($line, 63, 50))
    );
}

fclose($file_handle);

$ output数组被传递给一个执行数据库插入的函数,并且可以正常工作。

我没有硬编码固定宽度文本文件的列,而是想使用一个包含所需信息的数组,所以我可以像这样循环:

$information['type1'] = array(
    array('name' => 'title', 'position' => 0, 'length' => 50),
    array('name' => 'code', 'position' => 50, 'length' => 5),
    array('name' => 'date', 'position' => 55, 'length' => 8),
    array('name' => 'writer', 'position' => 63, 'length' => 50)
);
//there will also be a type 2, 3 and so on...

$type = $information['type1'];

...
while ($line = fgets($file_handle)) {
    ...
    $type['name'] => trim(substr($line, $type['position'], $type['length'])),...
    ...
}

基本上我想动态构建$ output数组!但是我无法正确地获得循环和/或数组,我可能正好盯着答案,但是我看不到它,已经花了几个小时的时间来处理它并且感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

$information['type1'] = array(
    array('name' => 'title', 'position' => 0, 'length' => 50),
    array('name' => 'code', 'position' => 50, 'length' => 5),
    array('name' => 'date', 'position' => 55, 'length' => 8),
    array('name' => 'writer', 'position' => 63, 'length' => 50)
);

$type = $information['type1'];

$file_handle = fopen('fixy.txt', 'r');

while ($line = fgets($file_handle))
{
    $output[$type['name']] = trim(substr($line, $type['position'], $type['length']));
}

fclose($file_handle);