<?php
    
    function csvParse($input, $callback = false){
        $results = [];
        $raw_array = (is_file($input)) ? array_map('str_getcsv', file($input)) : array_map('str_getcsv', explode("\n", $input));
        $array = array_splice($raw_array, 1, count($raw_array));
        foreach($raw_array[0] as $c) $columns[] = $c;
        foreach($array as $key0 => $val0) foreach($val0 as $key1 => $val1) $results[$key0][$columns[$key1]] = $val1;
        
        if(is_callable($callback) && !empty($results)) call_user_func_array($callback, array($results));
        elseif(!empty($results)) return $results;
        else throw new Exception("Results Empty: Can not read the string or open file.");
    }

    $file = "csv/file1.csv";
    $str = "name,age,occupation,city\nCrimin4L,24,Programmer,New York\nMrAwesome,20,Gamer,Los Angeles";

    $arr = csvParse($str);
    print_r(json_encode($arr, JSON_PRETTY_PRINT));