0

我正在考虑将表单中的数据存储为字符串,每个答案由管道分隔。我遇到的问题是一些答案可能以多个项目的形式出现。我们存储单选按钮选择及其相应的答案,例如

Question 1 - 1 Answer [A1]
Question 2 - Radio button selected [A2] + 3 form fields
Question 3 - 1 Answer [A3]

所以我正在考虑存储数据,例如:

$str = A1|A2[x,x,x]|A3

我选择将多项选择括在括号中的原因是为了让它与问题相关。

我认为我的解决方案会起作用,但是当我从数据库中读取值时,我将使用 Phpexplode()将值放入数组中。

例如explode("|",$str);

会给:

array(0=>A1, 1=>A2[x,x,x],2=>A3);

在开发此之前,获取内容[x,x,x]并将其从中分离的最佳方法是什么array[1]

任何建议将不胜感激。

谢谢

4

4 回答 4

0

您的方法没有提供任何好处,并且引入了不必要的复杂性。为什么不直接使用关系数据库并将每条数据存储在单独的表行中呢?如果您无权访问 MySQL 或类似的 DBMS,则始终可以使用SQLite

于 2010-02-17T12:07:53.773 回答
0

我认为您需要看一下serializeunserialize

于 2010-02-17T12:10:23.457 回答
0

或者,与其将答案作为字符串,然后尝试将它们转换为数组,您可以从数组开始,然后如果需要将它们转换为字符串,那么您可以:

$array = array('A1',array(x,x,x),'A3');

然后,如果您确实需要它作为字符串,您可以调用:

$str = 序列化($array);

这样,您可以在分解字符串后获得类似的访问解决方案的方法,只是您不必处理尝试进一步拆分 A2[1,2,3] 字符串,因为您只需检查它是否一个数组。

于 2010-02-17T12:14:14.870 回答
0

您还可以使用 json_encode() 函数将信息存储为编码为 json 的关联数组。然后,当您从数据库中获取数据时,您只需执行以下操作:

$arr = json_decode($value);

http://php.net/manual/en/function.json-encode.php

于 2010-02-17T13:14:09.980 回答