#php #codeigniter-3
Вопрос:
У меня проблема с переходом от каждого массива к массиву, почему все в цикле?
пример вывода json, который я хочу.
{"page":"books","list":[{"title":"ABC"},{ "title" : "CDE"}]}
пример вывода из моего кода
{"page":"books","list":[{"title":"ABC"}]}{"page":"books","list":[{"title":"CDE"}]}
это мой код
foreach ($row as $rows) :
$arrayName = array(
'page' => $this->input->get('type', TRUE),
'list' => array([
'title' => $rows['title'],
])
);
echo json_encode($arrayName);
endforeach;
и это мой CI_Controller
return $this->db->get()->result_array();
как выполнить цикл только в строке «список:«?
Ответ №1:
Не кодируйте в каждой итерации цикла, создайте свой массив в нужном вам формате, а затем закодируйте его в json.
$arrayName = [];
$arrayName['page'] = $this->input->get('type', TRUE);
foreach ($row as $rows) :
$arrayName['list'][] = [
'title' => $rows['title']
];
endforeach;
echo json_encode($arrayName);
В приведенном выше коде вы создаете свой массив и статическое поле page
вне цикла, оно вам не нужно внутри цикла.
Поле, включающее вложенные массивы list
, — это поле, поэтому вы в основном создаете вложенные массивы с заголовком ключа и значением заголовка для каждой итерации.
Когда вы закончите, вы просто закодируете свой общий массив, и в итоге получите ожидаемый результат
Комментарии:
1. Боже, это действительно помогло мне. спасибо за помощь, у меня нет опыта в воспроизведении json, так как существует множество версий каждого вывода json. спасибо, братан
2. Рад, что помог 🙂