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

#php #arrays #json

#php #массивы #json

Вопрос:

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

 {"music" : [ 
    { 
        "title" : "Jazz in Paris",
        "album" : "Jazz amp; Blues"
    },
    { 
        "title" : "Jazz in Paris",
        "album" : "Jazz amp; 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);
 

Комментарии:

1. Вам нужно обернуть весь массив в другой массив.

2. для ассоциативной структуры music части массива вам нужно добавить сюда дополнительный массив, пример, приведенный the alokPatel в качестве ответа.

Ответ №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);
 

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

Комментарии:

1. Потрясающе, рад помочь.

Ответ №2:

Немного измените существующий код-

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

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

Ответ №3:

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

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

Ответ №4:

Вам нужно обернуть вещи в другой массив. просто измените 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); 
 

Комментарии:

1. @FrayneKonok. о да, брат, это была моя ошибка, спасибо, что указал на это 🙂