我试图从.CSV文件中提取信息,以便使用PHP处理本地数据库。
我有以下代码:
<?
$csv = array_map('str_getcsv', file('red.csv'));
echo $csv[1];
?>
如果我尝试用print_r或var_dump回显array_map,那么第一位就可以了 - 但是我不知道如何以这种方式处理它。
我曾经能够循环使用for循环,其中$ csv是一个数组而[0]是记录 - 但现在唯一的事情是ECHO
&#39; d是{{ 1}}
我之前从未使用过array_map,而且我在网上其他地方找到了我正在使用的代码(显然除了回声)。
如何循环遍历整个数组以单独处理每条记录?
答案 0 :(得分:1)
Array
被echo
编辑的原因是因为str_getcsv
返回一个数组。所以$csv
是一个数组,其中的每个元素都是csv值的数组。如果将其更改为
<?php
$csv = array_map('str_getcsv', file('red.csv'));
print_r($csv[0]);
?>
您将能够将该行视为每个csv项的数组。
答案 1 :(得分:0)
您可以使用以下命令遍历csv:
if (($handle = fopen("your.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, null, ";", '"')) !== FALSE) {
// $data is an array that contains the current row
}
}
注意:根据你的csv更改fgetcsv()中的分隔符和转义字符。
答案 2 :(得分:0)
您可以使用以下结构遍历/迭代CSV数组:
foreach( $csv as $row_id => $row_data ) {
foreach( $row_data as $cell_id => $cell_data ) {
// The next will output the same data
echo $cell_data . '\n';
echo $csv[$row_id][$cell_id] . '\n';
}
}
答案 3 :(得分:0)
请按照以下代码从csv获取数据,循环遍历每一行。
<?php
$csv = array_map('str_getcsv', file('red.csv'));
//print_r($csv[0]);
foreach($csv as $key=>$v)
{
echo $csv[$key][0];//column A/0
echo $csv[$key][1];//column B/1
}
?>