#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. о да, брат, это была моя ошибка, спасибо, что указал на это 🙂