如何将数组存储为字符串php?

时间:2016-06-15 15:27:12

标签: php mysql arrays string associative

我有一个javascript格式化HTML表格,该表格需要一些参数来配置它。我在mysql中也有一个报告表,其中包含我的报告的定义:报告名称,描述,sql,页脚,权限,报告状态和一些报告特定参数的字段。我将参数构建为一个数组,以便我可以设置默认值,然后可以被其他进程覆盖,然后传递给将该数组转换为javascript参数的进程。

我们使用PHP根据表中的信息构建报告,并合并一组"默认参数"一系列"报告特定参数" 。在我们将报告定义放入数据库之前,每个报告都有一个函数,它使用array_merge合并默认参数数组和报告特定参数数组。

例如

$defaultparameters = array (
                    'base_path' => "'/inc/plugin/'",
                    'btn_reset' => "'true'",
                    'enable_default_theme' => "'true'");
$thisReportParameters  = array (
                    'extensions' => "[{ name: 'sort', types: ['String', 'String', 'String','String', 'String','String', 'Number']},'col_2'=> "'multiple'",'col_3'=> "'select'");
$parameters = array_merge ($defaultparameters,$thisReportParameters);

然后将此数组传递给为页面构建javascript的函数。 现在我们已将所有报告放入表中,我无法将报告特定参数提取到关联数组中。 现在,默认参数在报告类中设置为报告对象的属性。我想将数据库中的其他报表特定参数拉入一个数组中以组合这两个参数。 当我添加' col_2' => "'多个'"' col_3' = GT; "'选择'"到数据库并将其作为数组返回,它将整个字符串放在数组中的元素[0]中 即

Array ([0] => "'col_2'=> "'multiple'"'col_3'=> "'select'"") 

而不是

Array([col2] =>"'multiple'",[col_3]=> "'select'")

我考虑过只是将数据库中的字符串添加到javascript配置的末尾,但这不会覆盖已在默认设置数组中定义的任何设置,因此我需要先将其添加到数组中,以便在合并时它会覆盖密钥相同的任何默认值。

报告的具体选项很多,格式也各不相同,因此我无法为每个选项创建一个字段。

我考虑过爆炸字符串,然后解析对来构建数组,但值可以有","在它中也可能搞乱爆炸。

这可能是实现这一目标的一种非常巧妙的方式,但此刻它已经逃脱了我......

欢迎任何建议

C

1 个答案:

答案 0 :(得分:0)

你可以serialize你的阵列。

在JSON中还有encode个选项,如果你的数据库是postgres可能会更好 - 它有一些内置支持这样的东西,并且使用其他一些东西更容易处理你的数据语言,如果需要的话。

在任何情况下,请务必在尝试将数据放入数据库之前正确清理数据。