我有一个像
这样的数组$newArray = $_POST[$newId];
print_r($newArray);
打印出像
Array ( [1] => Yes [2] => a [3] => b [4] => c [5] => d [6] => e [7] => f [8] => [9] => [10] => [11] => [12] => [13] => [14] => )
但是当我尝试在序列化之后存储在db中
serialize($newArray)
它像
一样存储s:211:"Array
(
[1] => Yes
[2] => ab
[3] => c
[4] => d
[5] => e
[6] => f
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] =>
)
";
这是DB中的单个数组元素。如何正确序列化元素。
答案 0 :(得分:4)
看起来它正在序列化字符串,而不是数组。你确定$newArray
是一个数组吗?
从serialize返回的字符串以's:211'开头。这意味着字符串被传递到serialize()
。如果数组传递到serialize()
,则返回的字符串将以'a:14'开头。
答案 1 :(得分:0)
@pradeep 在文本字段中存储$ newArray的地方,通过串行存储
$arrayString = $_POST['newId'];
您将在$ arrayString中获得serialallized数组。 如果要在存储到数据库之前使用该数组,请使用unserialize,否则直接存储在已经串行化的数据库中。
$array = unserialize($arrayString);
这将解决您的问题
答案 2 :(得分:0)
不确定我是否理解这个问题,如果您不想序列化,如果您想从文本字段传递它,可能会使用自定义语法,如:1:a; b:2; c:3
然后爆炸(';',$ string);循环,结果,爆炸(':',$ rows)
使分隔符更难以发生冲突
explode("[[;]]", string); // 1]]:[[b[[;]]