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);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)