Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php foreach和for循环导致多个输出_Php_For Loop_Foreach - Fatal编程技术网

Php foreach和for循环导致多个输出

Php foreach和for循环导致多个输出,php,for-loop,foreach,Php,For Loop,Foreach,我正在阅读一堆excel文件,并将它们的数据插入数据库中。所有查询都正常工作。唯一的问题是,如果作者出现在第一个excel文件中,其条目也会显示在其他excel文件中。这是我的密码 $array = array( 1=>"abc", 2=>"def", 3=>"age"); foreach ($array as $key=>$val) { $file = $array[$key].'.xls'; $data->read($file); $I

我正在阅读一堆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
Ali=>2 282
age.xls
Ali=>3 282
谁能告诉我这个密码哪里有错吗。任何帮助都将不胜感激


注意excel工作表中的行数为100。

在我看来,问题在于具体行的第1列始终是
“Ali”
。这是一个猜测,因为除了两个额外的
Ali=>1282
之外,您的输出与预期一样。如果你能给我们前几行,让我们理解一下,那会有帮助的。否则,这似乎真的是个问题。

我没有在
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>";
       }
    }
}
foreach($key=>$val的数组){
$data=新的电子表格\u Excel\u阅读器();
$data->setOutputEncoding('utf-8');
$file=$array[$key]..xls';
$data->read($file);
$ID=$key;
对于($i=1;$i工作表[0]['numRows'];$i++){
$a=addslashes($data->sheets[0]['cells'][$i][1]);
如果($a==“Ali”)
{
回声$a.“=>”$ID.“.i.”
”; } } }
用于在每次循环迭代结束时取消设置(销毁)当前值
$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工作表[0]['numRows'];$i++){
$a=addslashes($data->sheets[0]['cells'][$i][1]);
如果($a==“Ali”)
{
回声$a.“=>”$ID.“.i.”
”; } }
为此:

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);
}
for($i=1;$i工作表[0]['numRows'];$i++){
$a=addslashes($data->sheets[0]['cells'][$i][1]);
如果($a==“Ali”)
{
回声$a.“=>”$ID.“.i.”
”; } 未结算(a美元); }
代码正常工作,不是吗?@xdazz是的,但我不知道为什么不能正常工作。如果我们没有代码输入,很难判断出是什么问题。看起来
$data->sheets[0]['numRows']
有3个元素,但您只想使用其中一个元素。@sachlen需要什么输入?告诉我我将添加有问题的。在for循环结束大括号之前添加
unset($a)
。它将在下一次循环迭代之前取消设置$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>";
    }
    unset($a);
}