0

我尝试比较两个数组。第一个数组来自我的 csv 文件,第二个是 $a - 数组。我尝试获取 csv 数据并从 $a 数组数据中再添加一列,如果没有与 csv 第 2 列( $line 1 )中相同的值,然后显示“空”

现在它只显示数组中的第一个值-> a (102019) 其他值显示“空”;

看到一切都很好,但数组 a 不只循环一次,我错在哪里?请给我看……我今天花了一整天,但什么也没找到。

<?php
    ////////////////////////////////////////////////////////////

    $file_path="".$_SERVER["DOCUMENT_ROOT"]."/upload/111.csv";

    ////////////////////////////////////////////////////////////

    $a = array('102019','102401','102403','102027','102115','102402','102027');

    function get_array_from_csv($file,$delimiter) {
      if (($handle = fopen($file, "r")) !== FALSE) {
        $i = 0;
        while (($lineArray = fgetcsv($handle, 4000, $delimiter)) !== FALSE) {
          for ($j=0; $j<count($lineArray); $j++) {
            $data2DArray[$i][$j] = $lineArray[$j];
          }
          $i++;
        }
        fclose($handle);
      }
      return $data2DArray;
    }

    function search($a, $line) {
        foreach($a as $mas_value) {
            if (substr($line[1], 2) == $mas_value) {
              $file = $mas_value;
            } else {
              $file = 'empty';
            }
            return $file;
        }
    }

    $data = get_array_from_csv($file_path, ';');

    echo '<table>';
    foreach ($data as $line) {

      $file = search($a, $line);

      echo '<tr>
        <td>'.$line[0].'</td>
        <td>'.$line[1].'</td>
        <td>'.$line[2].'</td>
        <td>'.$line[3].'</td>
        <td>'.$line[4].'</td>
        <td>'.$line[5].'</td>
        <td>'.$file.'</td>
      </tr>';
    }    
    echo '</table>';

    ?>

这是我的输出数据:

ALFA ROMEO  BP102401    156 LIM 4D  1997-   20,00       empty
    BP102402    156 SPORT WAGON     2000-   20,00       empty
    BP102403    156 SPORT WAGON ar ugunsdzeЕЎ.  2000-   20,00       empty
    BP102404    159 -SW     2006-   22,00       empty
AUDI    BP102023    A 1     2010-   22,00       empty
    BP102023    A 1 Sportback   2010-   22,00       empty
    BP102001    A 2     2000-2005   15,00       empty
    BP102010    A 2 German  2000-2005   15,00       empty
    BP102002    A 3 HB  1996-2003   20,00       empty
    BP102013    A 3 HB  2003-   20,00       empty
    BP102004    A 4 AVANT/Combi     1994-2001   20,00       empty
    BP102012    A 4 AVANT/Combi     2001-2007   20,00       empty
    BP102019    A 4 AVANT /Combi    2008-   20,00       102019
    BP102005    A 4 LIM/SED     2000-2008   20,00       empty
    BP102003    A 4 LIM/SED     1994-2001   20,00       empty
    BP102018    A 4 LIM/SED     2008-   22,00       empty
    BP102018    A 5     2007-   22,00       empty
    BP102022    A 5 SPORTBACK   2009-   25,00       empty
    BP102007    A 6 AVANT/Combi     1997-2005   20,00       empty
    BP102016    A 6 AVANT/Combi     2005-2011   25,00       empty
    BP102026    A 6 AVANT/Combi     2011-   25,00       empty
    BP102007    A 6 AVANT QUATTRO   1997-2005   20,00       empty
    BP102006    A 6 LIM/SED     1997-2004   22,00       empty
    BP102014    A 6 LIM/SED     2004-2011   25,00       empty
    BP102025    A 6 LIM/SED     2011-   25,00       empty
    BP102011    A 6 LIM German  1997-2004   22,00       empty
    BP102007    A 6 ALLOROAD QUATTRO    2000-   20,00       empty
    BP102024    A 7 SPORTBACK   2010-   25,00       empty
    BP102027    Q 3 with a tool set located in the trunk    2011-   22,00       empty
    BP102028    Q 3 with an irregular size spare tire (space saver, smaller than standard tires)    2011-   22,00       empty

数组中的所有值 - 与 $line 1相比,必须在 csv 行中找到 a

完整的 csv 在这里上传

4

1 回答 1

4

尝试如下更改您的搜索功能

function search($a, $line) {
        $file = 'empty';
        foreach($a as $mas_value) {
            if (substr($line[1], 2) == $mas_value) {
              $file = $mas_value;
              break;
            }
        }
        return $file;
    }
于 2012-09-28T17:26:43.313 回答