使用 php 自动生成 json 文件


Automatic generated json file with php

我正在尝试让播放列表 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
    }
]

}

while 不是 for - 在这种情况下不要使用增量变量

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

$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();
}

你的代码很混乱。

您正在递增阵列名称。

而不是此代码:

 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);