2016-08-24 74 views
0

目前我正在使用Joomla! - 组件,它使用“可重复”字段类型。 可重复将不同字段的数据存储到数据库字段内的JSON中。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] => 
     ) 

) 

可惜,这并不是真正的最佳JSON结构对我来说,如果我想在HTML表中输出结果,因为外部数组的索引将贯穿每个项目的每个“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如何建立可重复的字段类型;)

我m到处有点晕与阵列这里,也许有人可以给我一个很好的建议:)

在此先感谢和问候

+1

开始编写代码 –

回答

1

它实际上很容易理线在数组,因为它是

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] 
       ); 
} 
+0

有时它可以如此容易:) THX很多:) – bquarta