Search code examples
phparrayscsvfputcsvarray-key

Can't get PHP array to get into CSV via fputcsv()


I have an $events array that looks like

Array
(
    [0] => Array
        (
            [4fe8a21c6f05d60023009d96] => any authentication
        )

    [1] => Array
        (
            [4fe8a21c6f05d60023009d96] => any authentication
        )

    [2] => Array
        (
            [4fe8a21c6f05d60023009d96] => any authentication
        )

    [3] => Array
        (
            [4fe8a21c6f05d60023009d96] => any authentication
        )

    [4] => Array
        (
            [4fe8a21c6f05d60023009d96] => any authentication
        )

And I am using the below code to try and put the user_id and the words "any authentication" each line of the CSV. However, using my code, I see the below (instead of "4fe8a21c6f05d60023009d96 " "any authentication") :

"User_ID    "   "   Event"
    "Array  "   "   Array"
    "Array  "   "   Array"
    "Array  "   "   Array"
    "Array  "   "   Array"
    "Array  "   "   Array"
    "Array  "   "   Array"
    "Array  "   "   Array"
    "Array  "   "   Array"
    "Array  "   "   Array"
    "Array  "   "   Array"
    "Array  "   "   Array"
    "Array  "   "   Array"
    "Array  "   "   Array"
    "Array  "   "   Array"

My code is:

$fp = fopen('events.csv', 'w');
$header = array('User_ID',",",'Event');
fputcsv ($fp, $header, "\t");

foreach ($events as $event) {
    $line = array(array_keys($event),',',$event);
    fputcsv($fp, $line,"\t");
}

fclose($fp);

Solution

  • for your array, try below solution:

    <?php
    $events = array
    (
        '0' => array
        (
            '4fe8a21c6f05d60023009d96' => 'any authentication'
        ),
    
        '1' => array
        (
            '4fe8a21c6f05d60023009d96' => 'any authentication'
        ),
    
        '2' => array
        (
            '4fe8a21c6f05d60023009d96' => 'any authentication'
        ),
    
        '3' => array
        (
            '4fe8a21c6f05d60023009d96' => 'any authentication'
        ),
    
        '4' => array
        (
            '4fe8a21c6f05d60023009d96' => 'any authentication'
        )
    );
    
    
    $fp = fopen('events.csv', 'w+');
    $header = array('User_ID',",",'Event');
    fputcsv ($fp, $header, "\t");
    
    foreach ($events as $event) {
    
        $line = array(key($event),',',$event[key($event)]);
        fputcsv($fp, $line,"\t");
    }
    
    fclose($fp);
    

    for more detail on fputcsv have a look at PHP: fputcsv - Manual