2013-10-03 5 views
0

Я пытаюсь создать генератор json-файлов плейлиста для работы над небольшим проектом слайд-шоу с картинками на моей малиновой пи.Автоматический сгенерированный json-файл с php

Как создать json-файл с php в этом формате?

Это мой 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 
    } 
] 

}

ответ

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

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(); 
} 
Смежные вопросы