note 46566 deleted from ref.pgsql by tomsommer
| From: | tomsommer@php.net | Date: | Fri, 15 Oct 2004 21:21:30 +0000 |
| Subject: | note 46566 deleted from ref.pgsql by tomsommer | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-78613@lists.php.net to get a copy of this message | ||
Note Submitter: phill at kenoyer dot com
----
Here are two functions that will create a PHP array from a PG array and will create a PG array from
a PHP array. I have tested these and they work very well. They both support multi-dimensional
arrays.
<?php
/*
* Convert a PHP array to a Postgresql array.
*/
function to_pg_array($array = FALSE)
{
if (!is_array($array)) return (FALSE);
$pg_array = "{";
foreach ($array as $value)
{
if (is_array($value)) $pg_array .= to_pg_array($value).',';
else $pg_array .= "\"$value\",";
}
if ($pg_array[strlen($pg_array)-1] == ',') $pg_array = substr($pg_array, 0, -1);
$pg_array = $pg_array.'}';
return ($pg_array);
}
/*
* Convert a Postgresql array to a PHP array.
*/
function from_pg_array($pg_array = FALSE, $dimension = 0)
{
if (!$pg_array) return (FALSE);
$array = array();
$level = 0;
$begin = 1;
if (!strstr($pg_array, '{') and !strstr($pg_array, '}'))
{
$array = explode(',', $pg_array);
return ($array);
}
for ($count = 0; $count < strlen($pg_array); $count++)
{
if ($pg_array[$count] == '{') { $level++; }
elseif ($pg_array[$count] == '}') { $level--; }
if ($level == 1 and $pg_array[$count] == '{') { $begin = $count; }
if ($level == 0 and $pg_array[$begin] == '{')
{
$array[] = from_pg_array(substr($pg_array, $begin + 1, $count - $begin - 1), $dimension + 1);
$begin = $count;
}
}
if ($dimension == 0)
{
$array = $array[0];
}
foreach ($array as $key=>$val)
$array[$key] = str_replace('"', '', $val);
return ($array);
}
/* Testing */
$PHP_array = array(array("Test 1.1","Test 1.2"),array("Test
2.1","Test 2.2"),array("Test 3.1","Test 3.2"));
print "<pre>To PG array:\n";
print_r($PG_array = to_pg_array($PHP_array));
print "\n\nFrom PG array:\n";
print_r(from_pg_array($PG_array));
?>
To PG array:
{{"Test 1.1","Test 1.2"},{"Test 2.1","Test 2.2"},{"Test
3.1","Test 3.2"}}
From PG array:
Array
(
[0] => Array
(
[0] => Test 1.1
[1] => Test 1.2
)
[1] => Array
(
[0] => Test 2.1
[1] => Test 2.2
)
[2] => Array
(
[0] => Test 3.1
[1] => Test 3.2
)
)
----
Reason: useless note