2

I've got a CSV file with two sets of data in it [its pulled of a temperature logger]. I'm wondering if there's a way to import the first two rows as one set of data and the rest as a second set of data. I'm familiar with PHP, but have never had to do anything like this. I've attached a subset of data below. Any help or direction would be greatly appreciated. Thanks.

Ajay

Serial Number,Model,Name,Number,Time of Reading,Sample Rate,Start Time
910000000ebeaa4,DS1922T,SRBA04-240909  ,beaa-TNTVLPRP54,9/30/09 16:52,1,9/24/09 18:59
Sample #,Date/Time,Temp ¡F,Temp ¡C,,,
1,"Thu, Sep, 24, 06:59, PM",82.4,28,,,
2,"Thu, Sep, 24, 07:00, PM",83.3,28.5,,,
3,"Thu, Sep, 24, 07:01, PM",83.3,28.5,,,
4,"Thu, Sep, 24, 07:02, PM",83.3,28.5,,,
5,"Thu, Sep, 24, 07:03, PM",83.3,28.5,,,
6,"Thu, Sep, 24, 07:04, PM",83.3,28.5,,,
7,"Thu, Sep, 24, 07:05, PM",83.3,28.5,,,
8,"Thu, Sep, 24, 07:06, PM",83.3,28.5,,,
9,"Thu, Sep, 24, 07:07, PM",83.3,28.5,,,
10,"Thu, Sep, 24, 07:08, PM",83.3,28.5,,,

solution, based on deceze's comment below

deceze, thanks. this works [as does the sql insert]. much appreciated.

<?php
$fhandle = fopen('1.csv', 'r');

$device_header = fgetcsv($fhandle, 1000, ',');                      
$device_data = fgetcsv($fhandle,1000,',');                          

$device = array_combine($device_header, $device_data);          

$data_header = fgetcsv($fhandle,1000,',');                          

$dataset = array();                                             
    while ($data = fgetcsv($fhandle,1000,',')) {  
        $dataset[] = array_combine($data_header, $data);        
}

fclose($fhandle);

?>
1
  • expects array, boolean given means that a call to fgetcsv($fhandle) probably returned false at some point. You'll have to put some more error handling in, I'm just showing you the general approach. Do not just copy and paste code without understanding what it does. As for SQL, you should be able to insert that data with the resulting $set1 and $set2 arrays. I don't understand what you want to append, but again, if you try to understand the code you can customize it to meet your needs. Commented Jul 23, 2010 at 3:51

1 Answer 1

3

Something like this should do it:

$fhandle = fopen('/path/to/input.csv', 'r');

$headers = fgetcsv($fhandle);  // reads first line
$set1 = array_combine($headers, fgetcsv($fhandle));  // reads second line

$set2 = array();
$headers = fgetcsv($fhandle);  // reads third line
while ($data = fgetcsv($fhandle)) {  // reads all following lines
    $set2[] = array_combine($headers, $data);
}

fclose($fhandle);

/*
$set1 == array('Serial Number' => '910000000ebeaa4', 'Model' => ...);
$set2 == array(
    array('Sample #' => 1, 'Date/Time' => 'Thu, Sep, 24, 06:59, PM', ...),
    ...
);
*/
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.