Convert php array to csv string
csv, multidimensional-array, phone-number, php
Solution
You could use `str_putcsv` function:
if(!function_exists('str_putcsv'))
{
function str_putcsv($input, $delimiter = ',', $enclosure = '"')
{
// Open a memory "file" for read/write...
$fp = fopen('php://temp', 'r+');
// ... write the $input array to the "file" using fputcsv()...
fputcsv($fp, $input, $delimiter, $enclosure);
// ... rewind the "file" so we can read what we just wrote...
rewind($fp);
// ... read the entire line into a variable...
$data = fread($fp, 1048576);
// ... close the "file"...
fclose($fp);
// ... and return the $data to the caller, with the trailing newline from fgets() removed.
return rtrim($data, "\n");
}
}
$csvString = '';
foreach ($list as $fields) {
$csvString .= str_putcsv($fields);
}
More about this on GitHub, a function created by @johanmeiring.
Problem
I have several method to transform php array to csv string both from stackoverflow and google. But I am in trouble that if I want to store mobile number such as 01727499452, it saves as without first 0 value. I am currently using this piece of code: Convert array into csv Can anyone please help me. ``` Array [1] => Array ( [0] => Lalu ' " ; \\ Kumar [1] => Mondal [2] => 01934298345 [3] => ) [2] => Array ( [0] => Pritom [1] => Kumar Mondal [2] => 01727499452 [3] => Bit Mascot ) [3] => Array ( [0] => Pritom [1] => Kumar Mondal [2] => 01711511149 [3] => ) [4] => Array ( [0] => Raaz [1] => Mukherzee [2] => 01911224589 [3] => Khulna University 06 ) ``` ) My code block: ``` function arrayToCsv( array $fields, $delimiter = ';', $enclosure = '"', $encloseAll = false, $nullToMysqlNull = false ) { $delimiter_esc = preg_quote($delimiter, '/'); $enclosure_esc = preg_quote($enclosure, '/'); $outputString = ""; foreach($fields as $tempFields) { $output = array(); foreach ( $tempFields as $field ) { if ($field === null && $nullToMysqlNull) { $output[] = 'NULL'; continue; } // Enclose fields containing $delimiter, $enclosure or whitespace if ( $encloseAll || preg_match( "/(?:${delimiter_esc}|${enclosure_esc}|\s)/", $field ) ) { $field = $enclosure . str_replace($enclosure, $enclosure . $enclosure, $field) . $enclosure; } $output[] = $field." "; } $outputString .= implode( $delimiter, $output )."\r\n"; } return $outputString; } ``` Thanks, Pritom.