【发布时间】:2013-03-28 09:29:51
【问题描述】:
我有一个 5 级多维数组。数组中键的数量会波动,但我需要将其存储在数据库中,以便稍后使用 PHP 访问它。有什么简单的方法可以做到这一点?
我的想法是使用几个不同的分隔符(如#* 和%*)将数组转换为单个字符串,然后在需要时使用一系列explode() 将数据转换回数组。
此时我还没有编写任何代码,因为我希望有更好的方法来做到这一点。但我确实有一个潜在的解决方案,我试图在下面概述:
这是我的数组的概述:
n=button number
i=item number
btn[n][0] = button name
btn[n][1] = button desc
btn[n][2] = success or not (Y or N)
btn[n][3] = array containing item info
btn[n][3][i][0] = item intput type (Default/Preset/UserTxt/UserDD)
btn[n][3][i][1] = array containing item value - if more than one index then display as drop down
以下是我将要使用的分隔符的简要说明:
#*Button Title //button title
&*val1=*usr1234 //items and values
&*val2=*FROM_USER(_TEXT_$*name:) //if an items value contains "FROM_USER" then extract the data between the perenthesis
&*val3=*FROM_USER(_TEXT_$*Time:) //if the datatype contains _TEXT_ then explode AGAIN by $* and just display a textfield with the title
&*val4=*FROM_USER($*name1@*value1$*name2@*value2) //else explode AGAIN by $* for a list of name value pairs which represent a drop box - name2@*value2
//sample string - a single button
#*Button Title%*val1=*usr1234&*val2=*FROM_USER(_TEXT_$*name:)&*val3=*FROM_USER(_TEXT_$*date:)&*val4=*FROM_USER($*name1@*value1$*name2@*value2)
总之,我正在寻找一些关于如何将多维数组存储在单个数据库表中的想法。
【问题讨论】:
-
您可以在单个表中使用子父关系想要存储在行级别,或者您可以将数组编码为 json。
-
您可以对其进行 json_encode 并保存该字符串。
-
你可以使用 php 的序列化/反序列化来将数组转换为字符串
-
不需要发明序列化方法,PHP已经实现了不止一种。尝试使用
serialize()或更通用的json_encode() -
你可以只使用一个会话。
标签: php mysql arrays multidimensional-array