Возникли проблемы с получением массивов в массивы для json-encode - PullRequest
0 голосов
/ 09 августа 2011

вот функция: http://pastebin.com/tQLjzzbH

Я хочу вернуть это:

{"years":[
    {
        "yName":"2011",
        "yAlbums:[
            {
                auID:"1234",
                aID:"456",
                etc..
            },
            {
                auID:"12345",
                aID:"4567",
                etc..
            }
    },
    {
        "yName":"2010",
        "yAlbums:[
            {
                auID:"2234",
                aID:"556",
                etc..
            }
    }
]}

но это только возвращение этого:

{"years":[
{"yName":"2011"},
{"yName":"2010"}]}

Я пытался получить это целую вечность, теперь я полностью потерян. Некоторая помощь будет оценена.

Спасибо.

1 Ответ

1 голос
/ 09 августа 2011

Вы прочитали свой результат до самого конца

while($data2 = mysql_fetch_assoc($result))
{
    $yearsArrayRaw[] = $data2['album_year'];
}

Добавьте mysql_data_seek($result,0) перед внутренним while, в строку 36. Также я бы предложил переписать эту функцию, чтобы иметь один цикл, используя что-то вроде

$year_albums= array();
while ($data = mysql_fetch_assoc($result)){
    if (empty($years[$data['album_year']])){
        $year_albums[$data['album_year'] = array(
            'yName'=>$data['album_year'],
            'yAlbums'=>array()
        );
     }
     //...album creation logic here...//
     $year_albums[$data['album_year']['yAlbums'][] = $album;
}
//Converting arrays into objects
$years = array();
foreach ($year_albums as $year){
    $years[] = (object)$year;
}
json_encode($years);
...