好吧,我有以下数组和变量,它的输出如下:
`print_r($menu_ex_qnt);`
Array
(
[0] => 1
[1] => 2
)
print_r($menu_extra_item_name);
Array
(
[0] => 238
[1] => 239
)
$final_ex = array_combine($menu_ex_name, $menu_ex_qnt);
print_r($final_ex);
Array
(
[238] => 1
[239] => 2
)
echo $final_ex = serialize($final_ex);
a:2:{i:238;s:1:"1";i:239;s:1:"2";}
现在,我将此$final_ex
变量插入数据库。
但是当我从数据库中获取此变量并尝试unserialize
时,它会显示以下错误消息:
echo unserialize($p_ext_items);
Note : This $p_ext_items contain the serialize string e.g: a:2:{i:238;s:1:"3";i:239;s:1:"1";}
Notice: unserialize(): Error at offset 11 of 54 bytes .......
为什么?
我真正想要的是什么
有两个变量$menu_ex_qnt
和$menu_extra_item_name
。我想将这两个变量value
而不是 key
保存到数据库中。因此,在最终变量中,将有key
和value
对。
例如:
238 => 1
239 => 2
答案 0 :(得分:1)
由于您说$p_ext_items
包含序列化字符串,因此: - a:2:{i:238;s:1:"1";i:239;s:1:"2";}
你做了: -
$p_ext_items = htmlspecialchars($result['p_ext_items']);
echo unserialize($p_ext_items);
你必须删除第一行,在这种情况下不需要,所以只需要做: -
print_r(unserialize($p_ext_items)); // it will give array so use print_r
注意: - 您的工作示例: - https://eval.in/611959