генерировать ассоциативный массив json из php

Ожидаемая структура JSON:

{"music" : [ 
    { 
        "title" : "Jazz in Paris",
        "album" : "Jazz & Blues"
    },
    { 
        "title" : "Jazz in Paris",
        "album" : "Jazz & Blues"
    }
    .......
    .......
]}

Текущий JSON:

{"music":{"title":"Origin of evil","album":"devotional"}}

Код:

$sub = array();
foreach ($this->data as  $value)
{
    $sub['title'] = $value['title'];
    $sub['album'] = "devotional";
}
$audio = array('music'=>$sub);
echo json_encode($audio);

php,arrays,json,

1

Ответов: 4


1 "> принят

Просто создайте массив за пределами, foreachа затем добавьте его subarrayв основной массив [].

Как это,

$audio=array();
$audio["music"]=array();
foreach ($this->data as  $value)
        {
            $sub = array();
            $sub['title'] = $value['title'];
            $sub['album'] = "devotional";
            $audio["music"][]=$sub;
        }

echo json_encode($audio);

Это создаст массив музыки и каждый дополнительный массив в качестве объекта.


0

Измените бит в существующем коде -

Просто добавьте дополнительный массив в $subas array($sub).

$audio = array('music'=>array($sub));

0

Попробуйте с этим

    $sub = array();
    foreach ($this->data as  $value)
    {
        $temp['title'] = $value['title'];
        $temp['album'] = "devotional";
        array_push($sub, $temp);
    }
    $audio = array('music'=>$sub);
    echo json_encode($audio);

0

Вам нужно обернуть вещи в другой массив. просто изменитеecho json_encode(array($audio));

$sub = array();
foreach ($this->data as  $value)
{
    $sub['title'] = $value['title'];
    $sub['album'] = "devotional";
}
$audio = array('music'=>array($sub)); // just add array so whole things are wrap in another array.

echo json_encode($audio); 
PHP массивы, JSON,
Похожие вопросы