dounao4179 2017-08-07 13:44
浏览 80
已采纳

将序列化数据从数据库转换为PHP数组

I've got some custom data inputted into the postmeta table for each of my WooCommerce orders.

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:"roger@benefacto.org";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:"Jessica@benefacto.org";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:"mickey@benefacto.org";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:"donald@benefacto.org";s:7:"is_lead";b:0;s:12:"is_cancelled";b:0;}}}

-- EDIT ---

I initially assumed this was encoded with JSON, but following the answers below understand it is actually serialized data.

I want to convert this data into a PHP array - something like below - so I can play with it.

 $data = array ( 
    '6517' => array ( 
        0 => array ( 
            'first_name' => 'Roger',
            'last_name' => 'Rabit',
            'email' => 'roger@benefacto.org',
            'is_lead' => 1,
            'is_cancelled' => 0,
        ),
        1 => array (
            'first_name' => 'Jessica',
            'last_name' => 'Rabit',
            'email' => 'jessica@benefacto.org',
            'is_lead' => 0,
            'is_cancelled' => 0,
        )
    ),
    '6518' => array (
        0 => array (
            'first_name' => 'Mickey',
            'last_name' => 'Mouse',
            'email' => 'mickey@benefacto.org',
            'is_lead' => 1,
            'is_cancelled' => 0,
        ),
        1 => array (
            'first_name' => 'Donald',
            'last_name' => 'Duck',
            'email' => 'donald@benefacto.org',
            'is_lead' => 0,
            'is_cancelled' => 0,
        )
    )
);

Any thoughts much appreciated!

  • 写回答

1条回答 默认 最新

  • dongsui8162 2017-08-07 13:57
    关注

    As per the comments above this data is serialized rather than JSON encoded. For anyone else reading, the following works well.

    // 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:"roger@benefacto.org";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:"Jessica@benefacto.org";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:"mickey@benefacto.org";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:"donald@benefacto.org";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);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用