как создать мульти массив в CI foreach без цикла все

#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. Рад, что помог 🙂