使用php csv从数组打印单个条目匹配

时间:2012-01-20 09:57:38

标签: php arrays csv fopen

我有以下代码,我试图比较csv文件中的标题&根据标题取回适当的价格(在csv中):

<a class="Title" href="<?php echo $item->link;?>">
   <?php echo $item->title;?> <!--country title-->
</a>
<?php
       $pricelist = array();
       if (($handle = fopen("townprices.csv", "r")) !== FALSE)
       {
          while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)
          {
             $pricelist[] = $data;
          }
          fclose($handle);
       }
       echo '<pre>'; print_r($pricelist); echo '</pre>';
?>

CSV内容:

Spain, 250
France, 350
Germany, 150

(城镇/标题,价格)

这将从我的csv中恢复以下数组:

Array
(
    [0] => Array
        (
            [0] => Spain
            [1] =>  250
        )
    [1] => Array
        (
            [0] => France
            [1] =>  350
        )
    [2] => Array
        (
            [0] => Germany
            [1] =>  150
        )
)

我现在需要做的只是回应合适的价格,而不是

echo '<pre>'; print_r($pricelist); echo '</pre>';

所以我需要创建一个if语句,如:

if $ item-&gt; title = Spain,print 250

但我仍然坚持如何做到这一点。 任何帮助,将不胜感激。 感谢

2 个答案:

答案 0 :(得分:2)

我认为您应该为CSV编制索引。

让我举个例子。

$pricelist = array();
if (($handle = fopen("townprices.csv", "r")) !== FALSE) {
  while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    $pricelist[$data[0]] = $data[1];
  }
  fclose($handle);
}

所以

echo $pricelist['Spain']; // Would give 250

答案 1 :(得分:1)

要列出所有价格,请执行以下操作:

foreach ($pricelist as $line) {
    echo $line[0].": &euro; ".$line[1]."<br />";
}

要查找某个国家/地区的价格,请执行以下操作:

foreach ($pricelist as $line) {
    if($line[0] == "Spain") echo $line[1];
}

虽然这对大型源文件来说会变慢。