2014-02-25 36 views
0

我有一个csv文件“food.csv”,详细信息按以下顺序。总行数是10和第5列。然后我想要通过php索引文件来获取“芒果”数组。csv php索引不起作用

ITEM,DESC,QTY,RATE,TYPE 
124,APPLE,20,300,NEW 
123,MANGO,10,500,NEW 
135,BANANA,30,600,OLD 
148,ORANGE,12,40,NEW 
111,MANGO,20,150,OLD 
125,APPLE,7,100,OLD 

以下是PHP代码,但它不起作用。

<?php 
$eurl = "http://www.xyz.com/food.csv"; 
if (($handle = fopen ($eurl, "r")) !== FALSE) { 
    $keys = fgetcsv ($handle, 1000, ";"); 
    while (($data = fgetcsv ($handle, 1000, ";")) !== FALSE) { 
if ($r2->id == "MANGO") { 
     $found = true; 
     break; 
    } 

     $res[] = array_combine($keys, $data); 
    } 
    fclose ($handle); 
} 
var_dump($res); 
?> 

我需要结果按照以下方式。任何人都可以帮我纠正代码吗?

当索引关键字是 “芒果”,它应该给输出为:

芒果10公斤@ 500USD(123-NEW)

芒果20公斤@ 150USD(111 -old)

+0

更改如果($ [2-> ID == “芒果”),以如果($数据[1] == “芒果”) – Naruto

+0

另外您fgetcsv的参数3从改变' “;”'到'“,”',因为你的字段分隔符是逗号而不是分号。 – RiggsFolly

回答

0

此外,当不能可视化正在生产的阵列,并且它是一个数组,而不是一个对象添加像这样

<?php 
    $eurl = "http://www.xyz.com/food.csv"; 
    if (($handle = fopen ($eurl, "r")) !== FALSE) { 
     $keys = fgetcsv ($handle, 1000, ","); 

     $output = ''; 

     while (($data = fgetcsv ($handle, 1000, ",")) !== FALSE) { 
      var_dump($data); 
      if ($data[1] == "MANGO") { 
       $found = true; 

       $output .= sprintf("%s %d Kgs @ %dUSD (%d-%s)\n", 
            $data[1], 
            $data[2], 
            $data[3], 
            $data[0], 
            $data[4] 
           ); 
      } 
      // this makes no sense here, but I dont know what you were trying to do at this point 
      $res[] = array_combine($keys, $data); 
     } 
     fclose ($handle); 
    } 

    echo $output; 

    var_dump($res); 
?> 
+0

选中,无法使用 – Mohan

0
$handle = fopen("$link_file","r")or die("file dont exist"); 
$output = ''; 
while (!feof($handle)){ 
    $data = fgetcsv($handle,4096,","); 
     if($data[1] =="MANGO"){ 
      $output .= sprintf("%s %d Kgs @ %dUSD (%d-%s)<br>", 
             $data[1], 
             $data[2], 
             $data[3], 
             $data[0], 
             $data[4] 
             ); 
     } 

} 
echo $output; 
fclose($handle); 
一些调试代码

这将回声:

MANGO 10 Kgs @ 500USD (123-NEW) 
MANGO 20 Kgs @ 150USD (111-OLD)