2012-09-28 42 views
0

我尝试比较两个数组。第一个数组来自我的csv文件,第二个数组是$ a - 数组。我试图获得一个csv数据,并添加一个从$ a数组数据的列,如果不会有与csv列2中相同的值($ line 1)然后显示'空'php循环两个数组并比较数据

现在它只显示第一个值从数组 - > 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 

从阵列中的所有值 - 一个必须与$线比较1

Full csv is uploaded here

+0

你的问题是一个数组循环只有一次? – GBD

+0

我觉得这是我第二次看到这个问题呢?你为什么删除前一个? – Baba

+0

我修改了代码,添加了输出结果,附上完整的csv文件,所以如果有人能帮我复制这段代码并尝试 – Viktors

回答

4

尝试改变的CSV行中找到你搜索功能如下

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

+1给我的好朋友简单:) – Baba