Как получить массив из данных JSON и преобразовать его в желаемый новый формат массива?

0

Я получаю следующие данные запроса JSON:

data = "{\"photo\":[{\"fileURL\":\"https:\\/\\/www.filepicker.io\\/api\\/file\\/RqAN2jZ7ScC8eOx6ckUE\",\"filename\":\"IMG_0003.JPG\"},{\"fileURL\":\"https:\\/\\/www.filepicker.io\\/api\\/file\\/XdwtFsu6RLaoZurZXPug\",\"filename\":\"IMG_0004.JPG\"}]}";

Я хочу сделать массив из приведенных выше данных JSON в следующем формате:

Array
(
    [vshare] => Array
        (
            [IMG_0003.JPG] => Array
                (
                    [0] => https://www.filepicker.io/api/file/RqAN2jZ7ScC8eOx6ckUE
                )

            [IMG_0004.JPG] => Array
                (
                    [0] => https://www.filepicker.io/api/file/XdwtFsu6RLaoZurZXPug
                )

        )

)

Фактические данные запроса JSON могут быть огромными по размеру. Для вашей справки я использовал только два таких элемента.

Так может кто-то, пожалуйста, помогите мне в том, чтобы предоставить мне способ эффективного достижения желаемого нового массива?

Заранее спасибо.

  • 0
    Как вы получаете этот JSON? Вы вызываете API? У вас есть контроль над этим?
  • 0
    @amrhady: Это приходит по запросу от мобильного приложения. Но это не проблема сейчас. Моя проблема и проблема в том, как создать новый массив в желаемом формате надежным и эффективным способом?
Показать ещё 1 комментарий
Теги:
arrays
key-value
associative-array

2 ответа

0
Лучший ответ

Я думаю, что это будет делать то, что вы хотите.

<?php
$data = "{\"photo\":[{\"fileURL\":\"https:\\/\\/www.filepicker.io\\/api\\/file\\/RqAN2jZ7ScC8eOx6ckUE\",\"filename\":\"IMG_0003.JPG\"},{\"fileURL\":\"https:\\/\\/www.filepicker.io\\/api\\/file\\/XdwtFsu6RLaoZurZXPug\",\"filename\":\"IMG_0004.JPG\"}]}";

$obj = json_decode($data);

$new_ar = array();
foreach ( $obj->photo as $photo ) {
    $new_ar['vshare'][$photo->filename] = array($photo->fileURL);
}
print_r($new_ar);

Должен генерировать

Array
(
    [vshare] => Array
        (
            [IMG_0003.JPG] => Array
                (
                    [0] => https://www.filepicker.io/api/file/RqAN2jZ7ScC8eOx6ckUE
                )

            [IMG_0004.JPG] => Array
                (
                    [0] => https://www.filepicker.io/api/file/XdwtFsu6RLaoZurZXPug
                )

        )

)
-2

$ data = json_decode ($ data, true);

ОК ПОПРОБУЙТЕ ЭТОТ ТОГДА:

$data = "{\"photo\":[{\"fileURL\":\"https:\\/\\/www.filepicker.io\\/api\\/file\\/RqAN2jZ7ScC8eOx6ckUE\",\"filename\":\"IMG_0003.JPG\"},{\"fileURL\":\"https:\\/\\/www.filepicker.io\\/api\\/file\\/XdwtFsu6RLaoZurZXPug\",\"filename\":\"IMG_0004.JPG\"}]}";
$data = json_decode($data,true);
$NewData = false;
foreach($data['photo'] as $k=>$d){
    $NewData['vshare'][$d['filename']][] = $d['fileURL'];
}
var_dump($NewData);
  • 1
    Плохой ответ! Вниз проголосовал.
  • 0
    как это вообще плохо? Lawl! Это самый быстрый способ преобразования данных JSON в массив. Именно то, что ему нужно.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню