2017-08-07 27 views
-3

我有一些自定義數據輸入到每個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, 
     ) 
    ) 
); 

任何想法非常感謝!

+0

這不是JSON格式,你必須創建自己的解析器,或查看PHP反序列化功能http://php.net/manual/it/function.unserialize.php –

+3

使用'unserialize' –

+2

這不是JSON,它是PHP的'serialize'格式。 http://php.net/unserialize – deceze

回答

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);