@isb97
Программист, web-разработчик

Как с помощью цикла foreach или for занести данные из одного массива в другой для последующего вывода в XML?

Есть генератор XML (сторонний модуль подключенный к Yii2-приложению). Сейчас из выводится в XML одна последняя запись, а нужно, чтобы вывелись все... Как сделать, помогите, уже всю голову сломал)

//Выборка из БД
$results = Markers::findBySql("SELECT markers.*, categories.category FROM categories LEFT JOIN markers ON markers.category_id = categories.id WHERE markers.category_id = categories.id")
            ->asArray()
            ->all();

        $xml = new XmlConstructor();
        $res=array();$k=0;
        foreach ($results AS $elements) {

            $elements=[
                'tag' => 'marker',
                'attributes' => [
                    'id' => $elements[id],
                    'name' => $elements[title],
                    'address' => 'Конюшенная',
                    'lat' => $elements[lat],
                    'lng' => $elements[lng],
                    'type' => $elements[category]
                ],
            ];

        }

        $result = [
            [
                'tag' => 'markers',
                'elements' => [
                    $elements
                ],
            ],
        ];
        return $xml->fromArray($result)->toOutput();
  • Вопрос задан
  • 124 просмотра
Решения вопроса 1
JimmDiGreez
@JimmDiGreez
Full-stack Developer
Думаю, что-то вроде такого
foreach ($results as $elements) {
    $res[] = [
        'tag' => 'marker',
        'attributes' => [
            'id' => $elements['id'],
            'name' => $elements['title'],
            'address' => 'Конюшенная',
            'lat' => $elements['lat'],
            'lng' => $elements['lng'],
            'type' => $elements['category']
        ],
    ];
}

должно помочь.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
$result = array_map(function($el) {
  return [
    'tag' => 'marker',
    'attributes' => [
      'id' => $el['id'],
      'name' => $el['title'],
      'address' => 'Конюшенная',
      'lat' => $el['lat'],
      'lng' => $el['lng'],
      'type' => $el['category']
    ]
  ];
}, $result);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы