JSON、嵌套数组和正确顺序的问题

JSON, nested arrays and the issue of the right order

目前我正在开发 Joomla!-Component,它使用 "repeatable" 字段类型。 Repeatable 将不同字段的数据存储到数据库字段内的 JSON。

到此为止...

存储的JSON是这样的:

{"track_number":["1","2"],"track_duration":["00:02:02","00:20:24"],"title":["A Song","Ein Lied"],"file":["",""]}

所以 json_decode 将导致:

stdClass Object
(
    [track_number] => Array
        (
            [0] => 1
            [1] => 2
        )

    [track_duration] => Array
        (
            [0] => 00:02:02
            [1] => 00:20:24
        )

    [title] => Array
        (
            [0] => A Song
            [1] => Ein Lied
        )

    [file] => Array
        (
            [0] => 
            [1] => 
        )

)

不幸的是,如果我想在 html-table 中输出结果,这对我来说并不是最佳的 JSON 结构,因为外部数组的索引将运行 通过每个项目的每个 "track_number"(在嵌套的 foreach 中)等等...

我需要以某种方式使内部数组成为外部数组,反之亦然。 或者找到一种优雅的方式来正确处理嵌套数组。

我的意思是如果它看起来像这样就没有问题:

stdClass Object
(
    [0] => Array
        (
            [track_number] => 1
            [track_duration] => 00:02:02
            [title] => A Song
            [file] =>
        )

    [1] => Array
        (
            [track_number] => 1
            [track_duration] => 00:20:24
            [title] => Ein Lied
            [file] =>
        )

)

...但不幸的是,这不是 Joomla 构建 repeatable 字段类型的方式 ;)

我对这里的数组有点头晕,所以也许有人可以给我一个好的建议:)

提前致谢并致以最诚挚的问候

按原样处理数组实际上很容易

stdClass Object
(
    [track_number] => Array
        (
            [0] => 1
            [1] => 2
        )

    [track_duration] => Array
        (
            [0] => 00:02:02
            [1] => 00:20:24
        )

    [title] => Array
        (
            [0] => A Song
            [1] => Ein Lied
        )

    [file] => Array
        (
            [0] => 
            [1] => 
        )

)

使用简单的回显来演示方法

foreach ($obj->track_number as $idx => $track) {
    echo sprintf( 'Track No %d, Duration %s, Title %s, File %s',  
                  $track,
                  $obj->track_duration[$idx],
                  $obj->title[$idx],
                  $obj->file[$idx]
                );
}