php的数组与postgresql中的数组之间的转换处理

数据中心的DOI在设计时采用了PostgreSQL的数组类型来进行处理,因此在代码中涉及到PHP的数组和PostgreSQL数组之间的转换。其中比较麻烦的就是字符串数组之间的相互转换,因为涉及到转义的问题。

PostgreSQL的数组是这样存储的:
{"a1 a2","a2 a3","a3,a4"}
这就是PHP从PostgreSQL中直接读取出来的结果。要是不考虑逗号的转义,通常可以用函数来处理:
$phparray=explode(',',substr($pgarray,1,-1));
要考虑逗号的转义,网上通常有两种方法,一种是正则方法进行处理,一种是在PostgreSQL中转换为json进行处理(9.2版本以后支持)。个人推荐采用json转换的方法进行处理,应用范围更广。即:
在sql中使用array_to_json()函数转换为json字符串,然后在php代码中使用json_decode()函数转换为字符串。

而从PHP数组转换为PostgreSQL数组则稍显麻烦一些,可以用字符串方法进行(即组合成pg中的数组形式),也可以用array数组函数来组合。推荐采用array数组进行组合,这样可以避免处理逗号转义的麻烦(非常麻烦)。
SQL示例如下:
insert into table1 (id,pgarray) values(10,array['a1','a2,a3','a4,a5']);


已发布

分类

,

来自

标签:

评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注