【问题标题】:How to get array from JSON data and convert it into desired new array format?如何从 JSON 数据中获取数组并将其转换为所需的新数组格式?
【发布时间】:2015-03-06 10:46:55
【问题描述】:

我收到以下 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 请求数据可能很大。供您参考,我只在其中使用了两个这样的元素。

那么有人可以帮助我以有效的方式实现所需的新数组吗?

提前致谢。

【问题讨论】:

  • 你是如何得到这个 JSON 的?你在调用 API 吗?你能控制它吗?
  • @amrhady:它来自移动应用程序的请求。但这不是现在的问题。我的问题和挑战是如何以稳健有效的方式创建所需格式的新数组?
  • 我的观点是,如果您可以控制发布给您的数据,请更改其结构以满足您的需求。而不必在服务器上处理它。

标签: php arrays json associative-array key-value


【解决方案1】:

我认为这会满足您的要求。

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

    【讨论】:

    • 怎么这么穷?法律!这是将 json 数据转换为数组的最快方法。正是他所需要的。
    • 但我需要更多所需格式的新数组。这是我目前面临的主要挑战和问题。
    • 这不会给他他想要的数组。
    猜你喜欢
    • 2023-03-17
    • 2017-02-14
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    • 2012-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多