note 46566 deleted from ref.pgsql by tomsommer

From: 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

« previous php.notes (#78613) next »