【问题标题】:Could not get data from serialized array using unserialize function无法使用反序列化函数从序列化数组中获取数据
【发布时间】:2021-10-09 20:07:24
【问题描述】:

我已经序列化了数据,并且我正在使用对我不起作用的 PHP 反序列化函数。我不知道这个字符串有什么问题。这就是我的序列化数据的样子。我的 PHP 知识有限,所以我无法找出这些数据中的问题。谁能帮我解决这个问题。

s:73:"a:5:{i:0;s:4:"8941";i:1;s:4:"8939";i:2;s:4:"8942";i:3;s:4:"8946";i:4;s:4:"8950";}";

【问题讨论】:

  • @Remy 我把 2 换成了 4。你能告诉我这个字符串还有什么问题吗?

标签: php serialization


【解决方案1】:

您有一个序列化的字符串,其中包含一个序列化的数组。 字符串的长度是81而不是73。

s:81:"第一个和最后一个引号之间的字符,在示例中有 81 个"

$string = 's:81:"a:5:{i:0;s:4:"8941";i:1;s:4:"8939";i:2;s:4:"8942";i:3;s:4:"8946";i:4;s:4:"8950";}";';
$result = unserialize($string);

产生序列化的数组:

a:5:{i:0;s:4:"8941";i:1;s:4:"8939";i:2;s:4:"8942";i:3;s:4:"8946";i:4;s:4:"8950";}

反序列化:

$array = unserialize($result);

产生数组:

Array
(
    [0] => 8941
    [1] => 8939
    [2] => 8942
    [3] => 8946
    [4] => 8950
)

【讨论】:

  • 感谢您的回答和时间。这里的 s 是什么意思。您如何计算其值为 81
  • 已编辑。谢谢。
  • 好的,非常感谢!
猜你喜欢
  • 2019-10-12
  • 1970-01-01
  • 2021-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多