Php 将复杂数组结构转换为json

Php 将复杂数组结构转换为json,php,arrays,json,Php,Arrays,Json,我想在一个简单的json对象中转换一个复杂数组。我知道如何将数组转换为json(json_encode),但我的问题是如何将基本数组转换为以下json结构 数组结构: { "id": "1", "name": "Random Access Memories", "tracks": [ { "id": 1, "name": "Get Lucky", "artists": [

我想在一个简单的json对象中转换一个复杂数组。我知道如何将数组转换为json(json_encode),但我的问题是如何将基本数组转换为以下json结构

数组结构:

{
    "id": "1",
    "name": "Random Access Memories",
    "tracks": [
        {
            "id": 1,
            "name": "Get Lucky",
            "artists": [
                {
                    "id": 1,
                    "name": "Daft Punk"
                },
                {
                    "id": 2,
                    "name": "Pharrell Williams"
                }
            ]
        },
        {
            "id": 1,
            "name": "Touch",
            "artists": [
                {
                    "id": 1,
                    "name": "Daft Punk"
                }
            ]
        }
    ],
    "album_artists": [
        {
            "id": 1,
            "name": "Daft Punk"
        },
        {
            "id": 2,
            "name": "Pharrell Williams"
        }
    ]
}

Json输出:

{
    "id": "1",
    "name": "Random Access Memories",
    "tracks": [
        {
            "id": 1,
            "name": "Get Lucky",
            "artists": [
                {
                    "id": 1,
                    "name": "Daft Punk"
                },
                {
                    "id": 2,
                    "name": "Pharrell Williams"
                }
            ]
        },
        {
            "id": 1,
            "name": "Touch",
            "artists": [
                {
                    "id": 1,
                    "name": "Daft Punk"
                }
            ]
        }
    ],
    "album_artists": [
        {
            "id": 1,
            "name": "Daft Punk"
        },
        {
            "id": 2,
            "name": "Pharrell Williams"
        }
    ]
}

这不是一个特别好的做法,但我会循环遍历初始数组或图像(如OP中所示),以获得一个曲目数组,然后使用曲目中第一个元素的唱片集名称和唱片集id为json创建一个单独的数组,前提是所有唱片集和唱片集id都相同

$tracks = array();
$albumArtists = array();
foreach ($yourArrayNotAsAnImage as $track) {
    $tracks[] = $track;
    $albumArtists[] = array("name" => $track['artist_name'], "id" => $track['artist_id']);
}

$daftP = array("name" => $tracks[0]['album'], "id" => $tracks[0]['album_id'], "tracks" => $tracks, "album_artists" => $albumArtists);

echo json_encode($daftP);

这看起来不像一个数组,它看起来像一个图像。检查此链接。。它会帮助你的!这是我的阵列的一个示例。我上传它是为了让它更直观…我的答案对你有用吗?