我正在阅读一堆excel文件并将其数据插入数据库中。查询都正常工作。唯一的问题是,如果作者出现在第一个excel文件中,其条目也会显示在其他excel文件中。这是我的代码。
$array = array(
1=>"abc",
2=>"def",
3=>"age");
foreach ($array as $key=>$val) {
$file = $array[$key].'.xls';
$data->read($file);
$ID = $key;
for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {
$a = addslashes($data->sheets[0]['cells'][$i][1]);
if($a == "Ali")
{
echo $a."=>".$ID." ".$i."<br>";
}
}
}
所需的输出
abc.xls
Ali=>1 282
def.xls
age.xls
,输出结果是
abc.xls
Ali=>1 282
def.xls
Ali=>2 282
age.xls
Ali=>3 282
有人可以告诉我这段代码中的错误在哪里。任何帮助将是欣赏..
注意 Excel工作表中的行数为100。
答案 0 :(得分:0)
在我看来,问题是该特定行的第1列总是"Ali"
。这是猜测,因为你的输出是预期的,除了两个额外的Ali=>1 282
。如果你能给我们前几行只是为了理解它会有所帮助。否则这似乎是个问题。
答案 1 :(得分:0)
我没有在foreach
循环中包含这些行,因为$ data总是占用第一个excel文件。没有进一步的文件。这些行包含在foreach循环之前。
这些行是
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('utf-8');
现在代码变为
foreach ($array as $key=>$val) {
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('utf-8');
$file = $array[$key].'.xls';
$data->read($file);
$ID = $key;
for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {
$a = addslashes($data->sheets[0]['cells'][$i][1]);
if($a == "Ali")
{
echo $a."=>".$ID." ".$i."<br>";
}
}
}
答案 2 :(得分:0)
在每次循环迭代结束时,使用unset()取消设置(销毁)$a
的当前值。
所需的变更如下:
更改以下内容:
for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {
$a = addslashes($data->sheets[0]['cells'][$i][1]);
if($a == "Ali")
{
echo $a."=>".$ID." ".$i."<br>";
}
}
到此:
for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {
$a = addslashes($data->sheets[0]['cells'][$i][1]);
if($a == "Ali")
{
echo $a."=>".$ID." ".$i."<br>";
}
unset($a);
}