尝试将.csv文件中的信息处理为PHP

时间:2016-03-09 21:37:13

标签: php arrays csv

我试图从.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,而且我在网上其他地方找到了我正在使用的代码(显然除了回声)。

如何循环遍历整个数组以单独处理每条记录?

4 个答案:

答案 0 :(得分:1)

Arrayecho编辑的原因是因为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
    }
    ?>