读取CSV文件的限制

时间:2018-06-05 09:40:48

标签: php

我有一个包含多行的CSV文件,我想在php中只恢复第1列值等于27的数据,我该怎么做?

这就是我已经做过的事情:

<?php

require(dirname(__FILE__) . '/config/config.inc.php');

$fileDir = 'stock.csv';

$fileCsv = file_get_contents($fileDir);

echo $fileCsv;

我的CSV文件有3列:

| number | ref | stock |
|   19   | 135 |   10  |
|   27   | 656 |   20  |

谢谢。

2 个答案:

答案 0 :(得分:2)

正如RiggsFolly指出的那样; fgetscsv()是你最好的工具。

$fileDir = 'stock.csv';
//open the file for reading
$fileCsv = fopen($fileDir,"r");
//initialize our output array
$outputData = array();
//define the line length required for fgetcsv
$lineLength = 100;
//loop the contents of csv and split by `,`
while($row = fgetcsv($fileCsv,$lineLength,',')){
   //does our first column equal 27?
    if($row[0] == 27){
        //store the full row into our output array
        $outputData[] = $row;
    }
}
//output
print_r($outputData);

答案 1 :(得分:1)

如果您使用目录中的文件,则可以使用此段代码

$csv = array_map('str_getcsv', file('stock.csv'));

它将返回一个关联数组,您可以使用这样的foreach来处理

$just27Array = array();
foreach($csv as $index => $valueArray){
    if($valueArray['number'] == 27)
       $just27Array[] = $valueArray;
}

$just27Array变量中,您将拥有一系列数字等于27的数组