PHP中的序列化返回错误的值

PHP中的序列化返回错误的值,php,wordpress,serialization,Php,Wordpress,Serialization,我尝试用PHP序列化我的数据。不幸的是,serialize()函数返回了错误的值 要序列化的字符串: {"2c4cfd9a340dd0dc88b5712c680c1f88":{"type":"product_custom","layout":"default","size":"medium_large","attributes":{"62d7d5184b7a313dc64255bdb8187847":{"type":"image","color":"#FFFFFF","image":"36018

我尝试用PHP序列化我的数据。不幸的是,serialize()函数返回了错误的值

要序列化的字符串:

{"2c4cfd9a340dd0dc88b5712c680c1f88":{"type":"product_custom","layout":"default","size":"medium_large","attributes":{"62d7d5184b7a313dc64255bdb8187847":{"type":"image","color":"#FFFFFF","image":"36018"}}}}
serialize()在我的服务器上返回的内容:

serialize($code);

s:204:"{"2c4cfd9a340dd0dc88b5712c680c1f88":{"type":"product_custom","layout":"default","size":"medium_large","attributes":{"62d7d5184b7a313dc64255bdb8187847":{"type":"image","color":"#FFFFFF","image":"36018"}}}}";
应该返回什么():

您需要首先使用它来获得想要的结果:
当您将布尔开关用作json_decode中的第二个参数时,它将是一个数组而不是一个对象

$serialized = serialize(json_decode($inputString, true));
echo $serialized;

// output: 
// a:1:{s:32:"2c4cfd9a340dd0dc88b5712c680c1f88";a:4:{s:4:"type";s:14:"product_custom";s:6:"layout";s:7:"default";s:4:"size";s:12:"medium_large";s:10:"attributes";a:1:{s:32:"62d7d5184b7a313dc64255bdb8187847";a:3:{s:4:"type";s:5:"image";s:5:"color";s:7:"#FFFFFF";s:5:"image";s:5:"36018";}}}}

您正在使用的站点不清楚它在做什么,但它似乎将字符串作为JSON处理,并在将其序列化为PHP之前解码为数组。如果要复制此功能,可以使用:

$str = '{"2c4cfd9a340dd0dc88b5712c680c1f88":{"type":"product_custom","layout":"default","size":"medium_large","attributes":{"62d7d5184b7a313dc64255bdb8187847":{"type":"image","color":"#FFFFFF","image":"36018"}}}}';

echo serialize(json_decode($str, true));
a:1:{s:32:“2c4cfd9a340dd0dc88b5712c680c1f88”;a:4:{s:4:“类型”;s:14:“产品自定义”;s:6:“布局”;s:7:“默认”;s:4:“大小”;s:12:“中大”;s:10:“属性”;a:1:{s:32:“62d7d5184b7a313dc64255bdb8187847”;a:3:{s:4:“类型”;s:5:“图像”;s:5:“颜色”;s:7:“FFFF”;s:3605:}


正如评论中所指出的,除非有特定的原因需要序列化PHP,否则只需使用您已有的序列化JSON字符串即可-它将更具可读性和可移植性。

我不确定该站点使用的是什么逻辑,但如果您只是尝试序列化字符串,您不应该期望结果以
a:
开头。编辑:看起来它首先将字符串解码为JSON-这是您想要的吗?我正在尝试实现类似于此的结果。不幸的是,我不确定该站点如何获得正确的结果。“应该返回的”是数组的序列化,而不是字符串的序列化。因此,您可以先对其进行json_解码,然后再进行序列化。如果你真的需要的话。你为什么要序列化JSON呢?它已经是一个序列化对象了。。。
$str = '{"2c4cfd9a340dd0dc88b5712c680c1f88":{"type":"product_custom","layout":"default","size":"medium_large","attributes":{"62d7d5184b7a313dc64255bdb8187847":{"type":"image","color":"#FFFFFF","image":"36018"}}}}';

echo serialize(json_decode($str, true));