PgSQLで配列変数

Postgresで配列変数を使えるのはいいけど、PHPでselectして読んでもarrayにはならない。

DATABASE=> select hoge from fuga;
hoge

                        • -

{foo,bar}

これをpg_query()で読むと"{foo,bar}"という文字列になる。
特定の要素を取得するときは
select hoge[1] from fuga;
で良いけど、そもそも要素数不定だからこそDBで配列変数を使いたいわけで・・・

というわけで、リテラル文字列"{foo,bar}"を分解する関数を作ろうと思ったのですが、
PHPからのアクセスに限定すればserialize()関数で全て解決する模様。
ただし、

  • serialize()が任意の型をサポートするために文字列のサイズがやたら長くなる
  • PHP以外で読もうとするとかえって厳しくなる

ということで、ゆくゆくはPostgres配列用をPHP配列に変換する関数でも作ろうと思いまする。

構想としては

  • {から}までを配列とみなして取り出す
  • ","をデリミタにしてsplit()

難しくなさそうだけど面倒だなぁ・・・
どこかに落ちてないかなあ(他力本願主義)

・・・ありました。
ここに。
さて仕事しよ。