将数据库中的序列化数据转换为PHP数组
问题描述:
我有一些自定义数据输入到每个WooCommerce订单的postmeta表中。将数据库中的序列化数据转换为PHP数组
a:2:{i:6517;a:2:{i:0;a:5:{s:10:"first_name";s:5:"Roger";s:9:"last_name";s:6:"Rabbit";s:5:"email";s:19:"[email protected]";s:7:"is_lead";b:1;s:12:"is_cancelled";b:0;}i:1;a:5:{s:10:"first_name";s:7:"Jessica";s:9:"last_name";s:6:"Rabbit";s:5:"email";s:21:"[email protected]";s:7:"is_lead";b:0;s:12:"is_cancelled";b:0;}}i:6518;a:2:{i:0;a:5:{s:10:"first_name";s:6:"Mickey";s:9:"last_name";s:5:"Mouse";s:5:"email";s:20:"[email protected]";s:7:"is_lead";b:0;s:12:"is_cancelled";b:0;}i:1;a:5:{s:10:"first_name";s:6:"Donald";s:9:"last_name";s:4:"Duck";s:5:"email";s:20:"[email protected]";s:7:"is_lead";b:0;s:12:"is_cancelled";b:0;}}}
- 下面编辑---
我最初以为这是使用JSON编码的,但下面的答案理解它实际上是序列化的数据。
我想将这个数据转换成一个PHP数组 - 像下面的东西 - 所以我可以玩它。
$data = array (
'6517' => array (
0 => array (
'first_name' => 'Roger',
'last_name' => 'Rabit',
'email' => '[email protected]',
'is_lead' => 1,
'is_cancelled' => 0,
),
1 => array (
'first_name' => 'Jessica',
'last_name' => 'Rabit',
'email' => 'jessic[email protected]',
'is_lead' => 0,
'is_cancelled' => 0,
)
),
'6518' => array (
0 => array (
'first_name' => 'Mickey',
'last_name' => 'Mouse',
'email' => '[email protected]',
'is_lead' => 1,
'is_cancelled' => 0,
),
1 => array (
'first_name' => 'Donald',
'last_name' => 'Duck',
'email' => '[email protected]',
'is_lead' => 0,
'is_cancelled' => 0,
)
)
);
任何想法非常感谢!
答
根据上面的注释,这些数据是序列化的而不是JSON编码的。对于任何人阅读,以下工作良好。
// Pull serialized data
$serializeddata = 'a:2:{i:6517;a:2:{i:0;a:5:{s:10:"first_name";s:5:"Roger";s:9:"last_name";s:6:"Rabbit";s:5:"email";s:19:"[email protected]";s:7:"is_lead";b:1;s:12:"is_cancelled";b:0;}i:1;a:5:{s:10:"first_name";s:7:"Jessica";s:9:"last_name";s:6:"Rabbit";s:5:"email";s:21:"[email protected]";s:7:"is_lead";b:0;s:12:"is_cancelled";b:0;}}i:6518;a:2:{i:0;a:5:{s:10:"first_name";s:6:"Mickey";s:9:"last_name";s:5:"Mouse";s:5:"email";s:20:"[email protected]";s:7:"is_lead";b:0;s:12:"is_cancelled";b:0;}i:1;a:5:{s:10:"first_name";s:6:"Donald";s:9:"last_name";s:4:"Duck";s:5:"email";s:20:"[email protected]";s:7:"is_lead";b:0;s:12:"is_cancelled";b:0;}}}';
// Unserialize it into a standard array
$array = unserialize($serializeddata);
// Print Array
print_r($array);
这不是JSON格式,你必须创建自己的解析器,或查看PHP反序列化功能http://php.net/manual/it/function.unserialize.php –
使用'unserialize' –
这不是JSON,它是PHP的'serialize'格式。 http://php.net/unserialize – deceze