我将以下序列化数组存储在 MySQL longblob 数据字段中:
a:1:{s:10:"attributes";a:1:{s:13:"Ticket Holder";a:1:{i:0;s:8:"Joe Blow";}}}
在 PHP 中,当我查询字段、反序列化并打印出来时,会打印以下空数组:
Array
(
)
这是表创建语句:
CREATE TABLE `order` (
`state` varchar(255) CHARACTER SET ascii DEFAULT NULL,
`data` longblob,
`created` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
最佳答案
您的序列化数据无效。您绝不能手动维护序列化数据。
字符串序列化为:
s:<i>:"<s>";
哪里<i>
是一个整数,表示 <s>
的字符串长度,和<s>
是字符串值。
所以在这种情况下有效数据是:
a:1:{s:10:"attributes";a:1:{s:13:"Ticket Holder";a:1:{i:0;s:8:"Joe Blow";}}}
Joe Blow
字符串长度为 8,但在序列化字符串中定义为 13。
关于php - 反序列化 PHP 数组不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45868372/