Domenico Giacomo Campanile

Sviluppatore e Consulente Informatico

Create CSV file with data from another CSV and from a JSON file

File contact.csv

123456789,Markroc
213243546,Ferththas
435465657,Vellwerd
657483920,Roc
987654367,Conorah
549023565,Rocric
569028494,Do
768494893,Wardethel
756389574,Stanguth
564757485,Lafjohn
877589584,Mann-mac
575848584,Bandoald
575848685,Nethcla
839483958,Niel-sara
575493854,Thoann
728458395,Helmley

dataUsers.json

[
  {
    "_id": "5e637643b1bda0806a485ebe",
    "age": 31,
    "email": "gaysmith@nikuda.com",
    "address": "238 Grimes Road, Sandston, Idaho, 1847",
    "friends": [
      {
        "id": 0,
        "name": "Emilia Tyson"
      },
      {
        "id": 1,
        "name": "Gibson Kirkland"
      },
      {
        "id": 2,
        "name": "Everett Ferrell"
      }
    ]
  },
  {
    "_id": "5e637643ef9baa2fabbae262",
    "age": 22,
    "email": "everettferrell@nikuda.com",
    "address": "121 Furman Street, Tooleville, Kansas, 1989",
    "friends": [
      {
        "id": 0,
        "name": "Case Jefferson"
      },
      {
        "id": 1,
        "name": "Henderson Delacruz"
      },
      {
        "id": 2,
        "name": "Delia Morrow"
      }
    ]
  },
  {
    "_id": "5e637643b74c487d86a47ce3",
    "age": 26,
    "email": "deliamorrow@nikuda.com",
    "address": "220 Hegeman Avenue, Interlochen, Colorado, 668",
    "friends": [
      {
        "id": 0,
        "name": "Earnestine Meyer"
      },
      {
        "id": 1,
        "name": "Bethany Nixon"
      },
      {
        "id": 2,
        "name": "Dixie Carver"
      }
    ]
  },
  {
    "_id": "5e637643dbd01881c5990425",
    "age": 40,
    "email": "dixiecarver@nikuda.com",
    "address": "716 Benson Avenue, Robinson, Massachusetts, 9444",
    "friends": [
      {
        "id": 0,
        "name": "Contreras Mccormick"
      },
      {
        "id": 1,
        "name": "Lindsay Bond"
      },
      {
        "id": 2,
        "name": "Key Richard"
      }
    ]
  },
  {
    "_id": "5e6376433a30bffc7ca1ce01",
    "age": 34,
    "email": "keyrichard@nikuda.com",
    "address": "478 Thomas Street, Calpine, Guam, 1121",
    "friends": [
      {
        "id": 0,
        "name": "Mitzi Avila"
      },
      {
        "id": 1,
        "name": "Marci Beach"
      },
      {
        "id": 2,
        "name": "Angeline Davis"
      }
    ]
  },
  {
    "_id": "5e637643e09566e263912eab",
    "age": 21,
    "email": "angelinedavis@nikuda.com",
    "address": "106 Kimball Street, Vale, Arkansas, 8438",
    "friends": [
      {
        "id": 0,
        "name": "Bradford Christian"
      },
      {
        "id": 1,
        "name": "Carly Nash"
      },
      {
        "id": 2,
        "name": "Riggs Hicks"
      }
    ]
  }
]

Code PHP

<?php
        //Show Error Code
        ini_set('display_errors', 1);
        ini_set('display_startup_errors', 1);
        error_reporting(E_ALL);

        //Read file JSON and CSV
        $json = file_get_contents('dataUsers.json');
        $file = fopen("contact.csv", "r");

        //Decode JSON
        $arrayJSON = json_decode($json, true);

        //Create Result Data Class
        class Result {
            public $item_id;
            public $name;
            public $age;
            public $email;
            public $address;
            public $bestFriend;
            public $date;
        }

        //Create Result Data Array 
        $resultData= array();

        //Iterate CSV
        while (($row = fgetcsv($file, 0, ",")) !== FALSE) {

            //Iterate JSON
            foreach($arrayJSON as $obj){

                //Create result new object
                $myResult = new Result();
                
                //Read Data CSV
                $myResult->item_id = $row[0]; // ID
                $myResult->name = $row[1];  //Namee

                //Read Data JSON
                $myResult->age = $obj['age'];
                $myResult->email = $obj['email'];
                $myResult->address = $obj['address'];
                $myResult->address = $obj['friends'][0]['name'];

                //New value
                $myResult->date = new DateTime();
    
                //Add object created into array
                array_push($resultData, $myResult);
            }
        }     

        //Show results
        echo(json_encode($resultData));

        //Create file Results CSV
        $fp = fopen('result.csv', 'wb');
        foreach ($resultData as $obj) {
            fputcsv($fp, (array) $obj);
        }
        fclose($fp); 
?>