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
  • Вопрос задан
  • 94 просмотра
Решения вопроса 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]; // и т.д. лень дописывать
              }
         }
    }
}

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

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

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