将数组中的序列化数据转换为php中的字符串

时间:2014-10-16 17:23:29

标签: php arrays json api

我从MySQL的一个字段中提取数据。该字段是从API中以序列化字符串的形式提取图像。 API将以下数据提供给"图像" MySQL中的专栏。

a:2:{i:0;s:87:"http://url/image.jpg";i:1;s:85:"http://url/image2.jpg";}

如果print json_encode($result, JSON_NUMERIC_CHECK)我的输出结果为:

[  
 {  
  "title":"Product 1",
  "images":"a:2{i:0;s:87:\"http://url/image1.jpg";i:1;s:85:\"http://url/image2.jpg";}"
 }
]

我想要回来的只是

[  
 {  
  "title":"Product 2",
  "images":[  
   "http://url/image1.jpg",
   "http://url/image2.jpg"
  ]
 }
]

我不确定如何反序列化"图像"键入一个分离的公共列表。我尝试过不同形式的unserialize()函数,没有骰子。 任何帮助表示赞赏!

由于

2 个答案:

答案 0 :(得分:0)

使用unserialize()功能:

$ary = json_decode($json);


for($i=0; $i < count($ary['images']); $i++){
   $ary['images'][$i] = unserialize($ary['images'][$i]);
}


$obj = json_encode($ary);

答案 1 :(得分:0)

您的字符串表示序列化形式的数组。您需要先将其反序列化。问题是您提供的字符串不是有效的序列化数据。它看起来应该解决

$images = array("http://url/image1.jpg", "http://url/image2.jpg");

要获得所需的输出,您需要一个看起来像这样的数组

$data = array(
     'title' => 'Product 1',
     'images' => $images
);
echo json_encode($data);