我尝试比较两个数组。第一个数组来自我的csv文件,第二个是$ a - 数组。如果没有与csv第2列($ line 1中相同的值),我尝试获取csv数据并从$ a数组数据中再添加一列,然后显示'empty'
现在它只显示数组中的第一个值 - > a(102019)其他值显示'空';
看到一切都很好但阵列一个不循环只有一次,我错了?请告诉我......我今天花了一整天但没有找到。
<?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
数组中的所有值 - 必须在csv行中找到,与$ line 1相比
答案 0 :(得分: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;
}