我有一个简单的CSV表
Name,Year of birth,City
Yeremy,1980,New York
Louis,1982,Washington
Marta,1987,Chicago
David,1985,Los Angeles
此外,我有这段代码可以通过行数和列数获取单元格值:
$trow = 3;
$tcolumn = 3;
$output .= '<span>';
$row = 1;
$mycsvfile = array();
if (($handle = fopen($abspath, "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
$row++;
$mycsvfile[] = $data;.
}
fclose($handle);
}
$output .= $mycsvfile[$trowN][$tcolumnN];
$output .= '</span>';
我想定义$ trow = Marta和$ tcolumn = City,因此,在这种情况下,要获取值“芝加哥” ...
答案 0 :(得分:0)
可以对代码进行很多优化,但是使用当前代码:
$output .= array_column($mycsvfile, null, 0)['Marta'][2];
Name
(列0
)中的值对数组重新索引Marta
的索引,并在City
(列2
)中获取值如果您将列名组合在一起,则可以按列名进行访问:
if (($handle = fopen($abspath, "r")) !== FALSE) {
$columns = fgetcsv($handle, 1000, ",");
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$mycsvfile[] = array_combine($columns, $data);
}
fclose($handle);
}
$output .= array_column($mycsvfile, null, 'Name')['Marta']['City'];
请记住,如果Marta
列中的Name
出现多次,则将返回最后一个。