使用二维数组解析PHP CSV文件

时间:2012-04-17 18:04:01

标签: php parsing csv

我想将CSV数据解析成2d数组。 在我的csv文件中,标题如下,按特定值作为列。

CaseNumber IncidentDate IncidentTime位置事件处置 10120323 3/21/2009 .... ........ ...... ...... .....

我设法将所有CSV文件数据复制到一个名为array的数组中 在myarray中,我创建了一个只有两个标题的二维数组 array [0] =(

[0] => 'IncidentData',

[1] => '配置')

所以我的最终myarray应该是在CSV数组中的头部和myarray中的头部匹配后得到'IncidentData'和'Disposition'的所有列值

有什么想法吗?

这是我到目前为止所拥有的。

<?php
 //# Open the File.
         if (($handle = fopen("gatech.csv", "r")) !== FALSE) {
             // Set the parent multidimensional array key to 0.
             $nn = 0;
             while (($data = fgetcsv($handle, 0, ",")) !== FALSE) {
                 //# Count the total keys in the row.
                 $c = count($data);
             // Populate the multidimensional array.
                 for ($x=0;$x<$c;$x++)
                 {
                     $csvarray[$nn][$x] = $data[$x];
                 }
                 $nn++;
             }
             // Close the File.
             fclose($handle);
         }

        // take the row'ified data and columnize the array
         function columnizeArray($csvarray) {
             $array = array();
             foreach($csvarray as $key=>$value) {
                 // reparse into useful array data.
                 if ($key == 0) {
                     foreach ($value AS $key2=>$value2) {
                         $array[$key2] = array();
                         $array[$key2][] = $value2;
                     }
                 }else if ($key > 0){
                     foreach ($value as $key3=>$value3) {
                         $array[$key3][] = $value3;
                     }
                 }else{
                 }
         }
             //print_r($array[1][1]);
             return $array;
         }

        function groupColumns($array = null){
            $myarray = array(); //create myarray with sample headers
            $myarray = array(array("CaseNumber", "IncidentDate", "IncidentTime", "Location", "Incident", "Disposition"  ));
            //k = number of columns 0-5   starts k=1 so k-1 
            foreach($array as $k=>$v){ //make col into row
                for($i==0;$i<$k-1; $i++){ 
                    print_r($v); //test: prints everything on CSV the columns as row
                    while($array[0][$i] != $myarray[0][$i])
                        if($array[0][$k] == $myarray[0][$k])
                            print_r($myarray[0][$k]);
                        else
                            print_r('test : not reading');
                }
            }
        }
         $array2 = groupColumns(columnizeArray($csvarray));
?>

0 个答案:

没有答案