我正在从MySQL中的一个字段中提取数据。该字段以序列化字符串的形式从API中提取图像。API将以下数据传递到MySQL中的"images"列。
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"
]
}
]
我不知道如何将"images"键取消序列化为一个单独的公共列表。我尝试过不同形式的unserialize()
函数,没有骰子。感谢您的帮助!
感谢
您的字符串以序列化的形式表示一个数组。您需要先取消序列化。问题是提供的字符串不是有效的序列化数据。看起来它应该解决
$images = array("http://url/image1.jpg", "http://url/image2.jpg");
为了得到你想要的输出,你需要一个看起来像的数组
$data = array(
'title' => 'Product 1',
'images' => $images
);
echo json_encode($data);
使用unserialize()
函数:
$ary = json_decode($json);
for($i=0; $i < count($ary['images']); $i++){
$ary['images'][$i] = unserialize($ary['images'][$i]);
}
$obj = json_encode($ary);