0

我正在尝试让播放列表 json 文件生成器为我的 Raspberry Pi 上的一个小图片幻灯片项目工作。

如何以这种格式使用 php 创建 json 文件?

这是我的 PHP 代码:

function json_read() {
  $link = connect();

  $i = 0;

  $string = "SELECT * FROM Playlist, Bild WHERE Playlist.Bild_idBild = Bild.idBild";
  $result = mysqli_query($link, $string);   

  while ($row = mysql_fetch_array($result)){
    $i[] = array(
                 'file' => $row['Bild.dateiname'],
                 'duration' => $row['Playlist.zeit'],
                 );

    $i++;
  }

  $data = array(
                'playlist' => $i
                );

  echo json_encode($data);

  disconnect();
}

它应该是什么样子:

{
"playlist": [
    {
        "file": "001.jpg",
        "duration": 5
    },
    {
        "file": "002.jpg",
        "duration": 5
    },
    {
        "file": "003.jpg",
        "duration": 10
    },
    {
        "file": "004.jpg",
        "duration": 5
    },
    {
        "file": "005.jpg",
        "duration": 10
    },
    {
        "file": "006.jpg",
        "duration": 5
    }
]

}

4

2 回答 2

1

while适合- 在这种情况下不要使用 increment var

需要给出变量语义的名称:

$i 实际上是 $playlist;

function json_read() { $link = connect();

    $string = "SELECT * FROM Playlist, Bild WHERE Playlist.Bild_idBild = Bild.idBild";
    $result = mysqli_query($link, $string); 

    // create container for playlist elements
    $playlist = array();

    while ($row = mysql_fetch_array($result)){

        // add new element onto the end container
        $playlist[] = array(
            'file' => $row['Bild.dateiname'],
            'duration' => $row['Playlist.zeit'],
        );

    }

    $data = array(
        'playlist' => $playlist
    );

    echo json_encode($data);

    disconnect();
}
于 2013-10-03T10:38:50.727 回答
0

你的代码很混乱。

您正在递增数组名称。

而不是这段代码:

 while ($row = mysql_fetch_array($result)){
        $i[] = array(
            'file' => $row['Bild.dateiname'],
            'duration' => $row['Playlist.zeit'],
        );

        $i++;
    }

用这个:

 $arr = array();
 while ($row = mysql_fetch_array($result)){
  $temp['file'] = $row['Bild.dateiname'];
  $temp['duration'] = $row['Playlist.zeit'];
  $arr['playlist'][$i] = $temp;
        $i++;
    }



echo json_encode($arr);
于 2013-10-03T10:26:26.683 回答