I have trouble reading Postgresql arrays in PHP. I have tried explode(), but this breaks arrays containing commas in strings, and str_getcsv()
but it’s also no good as PostgreSQL doesn’t quote the Japanese strings.
Not working:
explode(',', trim($pgArray['key'], '{}')); str_getcsv( trim($pgArray['key'], '{}') );
Example:
// print_r() on PostgreSQL returned data: Array ( [strings] => {または, "some string without a comma", "a string, with a comma"} ) // Output: Array ( [0] => または [1] => "some string without a comma" [2] => "a string [3] => with a comma" ) explode(',', trim($pgArray['strings'], '{}')); // Output: Array ( [0] => [1] => some string without a comma [2] => a string, with a comma ) print_r(str_getcsv( trim($pgArray['strings'], '{}') ));
Advertisement
Answer
If you have PostgreSQL 9.2 you can do something like this:
SELECT array_to_json(pg_array_result) AS new_name FROM tbl1;
The result will return the array as JSON
Then on the php side issue:
$array = json_decode($returned_field);
You can also convert back. Here are the JSON functions page