我不确定如何在PHP中打印csv文件的确切元素(如第5列,第3行)。我有一个包含3列的CSV文件:ID,成本,位置。我需要搜索ID,我可以做,我甚至可以返回它的行号。但是,我该如何打印该行的第3列?下面的代码打印了可以找到$ interior的行号。
$lines = file('database.csv');
$line_number = false;
while (list($key, $line) = each($lines) and !$line_number) {
$line_number = (strpos($line, $interior) !== FALSE);
}
if($line_number){
$search = $interior;
$line_number = false;
if ($handle = fopen("database.csv", "r")) {
$count = 0;
while (($line = fgets($handle, 4096)) !== FALSE and !$line_number) {
$count++;
$line_number = (strpos($line, $search) !== FALSE) ? $count : $line_number;
}
fclose($handle);
}
echo $line_number;
答案 0 :(得分:0)
你可以找到所有逗号的位置(因为它是CSV文件)然后根据strpos($line, $search)
这个函数的返回你可以决定列。但是如果你的任何一列都包含逗号,这个逻辑将会失败。
对于这种情况,请搜索",
的位置(假设您的列将以双引号引用)。
你可以把它放在你的while循环中:
$searchStr = "CA" ;
$mystr = "5,50.00,CA";
$myArr = explode(",",$mystr);
foreach($myArr as $k=>$v)
{
if($v == $searchStr)
echo "Column :". $k;
}
答案 1 :(得分:0)
如果
$lines = file('database.csv');
然后给出数组中的行:
$line = explode(",", $lines[2]);
将为您提供第3行中每个elemet的数组(注意行变量中的两个(+1))。
因此...
Echo $line[4];
将是database.csv的第三行和第五列
答案 2 :(得分:0)
由于这个问题缺乏一个完整的(非破坏性的)答案:
您只需在csv的每一行使用str_getcsv并将结果存储在数组中:
$lines = file('database.csv');
$data = array();
foreach($lines as $line)
{
// if your CSV uses a different delimiter or you enclose your fields with a different character than " alter the following line according to the php docs of str_getcsv
$data[] = str_getcsv($line);
}
// get row 3, column 5:
echo $data[2][4];