Задать вопрос
myks92
@myks92
Нашёл решение — пометь вопрос ответом!

Как сохранить массив array?

Всем привет! Есть такой массив данных.
array(4) {
  ["rang_id"]=>
  array(2) {
    [0]=>
    string(1) "1"
    [1]=>
    string(1) "1"
  }
  ["discipline_id"]=>
  array(2) {
    [0]=>
    string(1) "1"
    [1]=>
    string(1) "2"
  }
  ["nomination_id"]=>
  array(1) {
    [0]=>
    string(1) "2"
  }
  ["category_id"]=>
  array(1) {
    [0]=>
    string(1) "2"
  }
}


Мне необходимо сохранить его в базу так, что бы в итоге получилась запись:
rang_id [1] | discipline_id [1] | nomination_id [1] | category_id [1]
rang_id [1] | discipline_id [1] | nomination_id [1] | category_id [1]
rang_id [2] | discipline_id [1] | nomination_id [1] | category_id [1]
rang_id [2] | discipline_id [2] | nomination_id [1] | category_id [1]

[$i] - ключ массива

Как вы поняли, то нужно из каждого поля в массиве делать уникальную запись. Если в первом поле несколько данных, то перебираем их и поставляем значения из других данных. Затем переходим к перебору следующего столбца.

5b1937e3c4872120027802.png
  • Вопрос задан
  • 95 просмотров
Подписаться 1 Средний 4 комментария
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
webinar
@webinar Куратор тега PHP
Учим yii: https://youtu.be/-WRMlGHLgRg
Можно в лоб переборами вложенными:
$new = [];
foreach($arr['rang_id'] as $one_r){
    foreach($arr['discipline_id'] as $one_d){
         foreach($arr['nomination_id'] as $one_n){
              foreach($arr['category_id'] as $one_c){
                  $new[] = ['rang_id' => $one_r, 'discipline_id' => $one_d]; // и т.д. лень дописывать
              }
         }
    }
}

Проверки на массив только добавить надо.
Можно рекурсию написать. Что б любые ключи и любое их количество. Возможно есть и более хитрые способы, но мне кажется этих вполне достаточно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽