2014-10-16 3 views
0

Я извлекаю данные из поля в MySQL. Поле вытягивает изображения в виде сериализованной строки из API. API предоставляет следующие данные в столбце «images» в MySQL.Преобразование сериализованных данных в массив в строку в php

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() в разных формах, без кубиков. Любая помощь ценится!

Благодаря

ответ

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

Вашей строка представляет собой массив, в последовательной форме. Сначала вам нужно будет неэтериализовать его. Проблема в том, что ваша строка, как указано, не является допустимой сериализованной информацией. Похоже, он должен решить, чтобы

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

Чтобы получить желаемый результат вам потребуется массив, который выглядит как этот

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

Это имеет смысл. Как мне получить доступ к данным в ключе «изображения», чтобы я мог превратить его в массив $ images? – James

+0

Обычно вы делаете 'unserialize ('ваши сериализованные данные здесь');' но строка в вашем вопросе не будет unserialize – Machavity

Смежные вопросы