搜索时fgetcsv为PHP,多行为数组

时间:2014-03-25 13:24:15

标签: php arrays csv while-loop fgetcsv

我有一个csv文件,我想在特定列中搜索值,如果找到相应的行应该在数组中设置。 我已经有了工作,但是如果有多行具有该值,那么我的代码只有最后一个代表变量,因为它会覆盖之前的代码。

我怎样才能使它能够分开回显所有行?也许在一个多维数组? 我是php的初学者,帮助很大程度上是apreciated。 感谢

$search = $station;
if (($handle = fopen("CSV-data/airport-frequencies.csv", "r")) !== FALSE) {
  $row=0;
  $csv_row = array();
  while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    if ($data[2] == $search) {
      $csv_row = $data;
    }
  }
  fclose($handle);
    echo $csv_row[3] . "<br />"; //type
    echo $csv_row[4] . "<br />"; //description
    echo $csv_row[5] . "<br />"; //frequency
    echo "<hr /><br />";
}   

1 个答案:

答案 0 :(得分:2)

你是对的,你需要一个数组数组。所以这样的事情对你有用:

$search = $station;
if (($handle = fopen("CSV-data/airport-frequencies.csv", "r")) !== FALSE) {
  $row=0;
  $csv_row = array();
  while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    if ($data[2] == $search) {
      $csv_row[] = $data;
    }
  }
  fclose($handle);
  foreach ($csv_row as $row) {
    echo $row[3] . "<br />"; //type
    echo $row[4] . "<br />"; //description
    echo $row[5] . "<br />"; //frequency
    echo "<hr /><br />";
  }
}