【发布时间】:2014-08-27 11:45:22
【问题描述】:
我有一个文件,我需要将文件的内容保存在我的 MySQL 数据库中。这是我用来解析文件的代码:
$lines = file($tmp_filename);
$data = array();
if (($handle = fopen($tmp_filename, 'r')) !== FALSE)
{
while (($row = fgetcsv($handle, 1000, ";", "\"", "\n")) !== FALSE)
{
$key = array_shift($row);
$data[$key] = $row;
}
fclose($handle);
}
这是我正在解析的文件的内容:
HDR;Payroll Interface;5496;2012-07-20
NM1;082;IN2;12345678;2001-01-15;Mr;Marcial;Gustav;Gustav,Marcial;PRI;Marcial
PR1;082;IN2;12345678;7 The School;Alvarez;Bahaghari; ;Gandum
PR2;082;IN2;12345678;400006;IND;M;M;2007-10-16;1976-03-31
PR3;082;IN2;12345678; ; ;A;
**truncated**
在某些情况下,数组具有相同的索引和相同的值,但我仍然需要保存这些数据,但会发生数组覆盖。必须添加什么才能将相同的数组放入不同的数组索引?
【问题讨论】:
-
如果您担心
$row会丢失,因为可能有两个$keys,那么为什么不保留一个内部计数器而不是使用$key作为索引呢?前任。$data[$count++] = $row;$count = 0;. -
@DaveChen 我编辑了我的帖子,请查看我的问题的链接和底部。谢谢:)
-
那么重复的会被放在另一个数组中吗?
-
是的...重复的应该放在另一个数组中,这样我就可以同时保存它们
-
为什么不改变保存它们的方式?您始终可以将 NM1 放在数组本身中,因此您可以使用常规数字作为索引。我假设您正在使用
foreach ($array1 as $index => $el)之类的东西来保存,这就是您要保留索引的原因。问题是您需要处理更多的重复数组。