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]
);
}
目前我正在开发 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]
);
}