我能否保存一个序列化数组到数据库,它有一些引用子数组


Can I save a serialized array to database, that has some reference sub arrays?

我在更新过程中使用的PHP代码如下:

$data = $_POST;
foreach ($data['answers'] as &$d):
    if(!isset($d['default'])):
       $d['default'] = "false";
    endif;
endforeach;

当我在迭代之后对它进行var_dump时,我得到了以下内容:

array(2) {
  ["question"]=>
  string(20) "Which did you like?"
  ["answerswers"]=>
  array(6) {
    [0]=>
    array(2) {
      ["default"]=>
      string(4) "true"
      ["option"]=>
      string(5) "First"
    }
    [1]=>
    &array(2) {
      ["option"]=>
      string(5) "Second"
      ["default"]=>
      string(5) "false"
    }
  }
}
如您所见,第二个数组有"&array"关键字,我假设这意味着引用。我的问题是,我可以序列化这个数组并保存到MYSQL数据库吗?我在显示页面上出现了一些数据错误,所以我想确定这是否与此有关。

我在显示页面上得到的错误信息是定义指数:选择

From the docs:

serialize()处理所有类型,除了资源类型。您甚至可以序列化()包含对自身引用的数组。正在序列化的数组/对象中的循环引用也将被存储。任何其他引用将丢失

关于你的错误信息,发布你调用"option"索引的行,这样我们就可以看到出了什么问题…

正如Sammitch所说,您可以使用serialize()将这些数据存储在数据库中。