Задать вопрос
Stewart85
@Stewart85
Full stack Developer

Прошу помощи как из выборки бд сделать вложенный массив?

Доброго дня всем друзья, у меня возник вопрос как мне преобразовать 2 массива ниже к 1 по ключам album_id и book_id, если они отличаются в массиве либо как сразу сделать это из базы данных.
[0]=>
  array(6) {
    ["album_id"]=>
    int(1)
    ["type"]=>
    int(1)
    ["album"]=>
    string(16) "я на море"
    ["usr_id"]=>
    int(1)
    ["date_album"]=>
    string(19) "2017-09-06 18:37:31"
    ["book"]=>
    array(4) {
      ["book_id"]=>
      int(1)
      ["book_name"]=>
      string(11) "книга1"
      ["alb_id"]=>
      int(1)
      ["photo"]=>
      array(8) {
        ["photo_id"]=>
        int(1)
        ["bk_id"]=>
        int(1)
        ["picture"]=>
        string(10) "photo1.jpg"
        ["url"]=>
        string(65) "188.225.82.218/content/users/albums/email/Я на море/book1/"
        ["location"]=>
        string(28) "Украина, Одесса"
        ["annotation"]=>
        string(13) "бла-бла"
        ["date_photo"]=>
        string(10) "22.07.2017"
        ["date_picture"]=>
        string(19) "2017-09-06 18:26:12"
      }
    }
  }
  [1]=>
  array(6) {
    ["album_id"]=>
    int(1)
    ["type"]=>
    int(1)
    ["album"]=>
    string(16) "я на море"
    ["usr_id"]=>
    int(1)
    ["date_album"]=>
    string(19) "2017-09-06 18:37:31"
    ["book"]=>
    array(4) {
      ["book_id"]=>
      int(1)
      ["book_name"]=>
      string(11) "книга1"
      ["alb_id"]=>
      int(1)
      ["photo"]=>
      array(8) {
        ["photo_id"]=>
        int(2)
        ["bk_id"]=>
        int(1)
        ["picture"]=>
        string(10) "photo2.jpg"
        ["url"]=>
        string(65) "188.225.82.218/content/users/albums/email/Я на море/book1/"
        ["location"]=>
        string(28) "Украина, Одесса"
        ["annotation"]=>
        string(13) "бла-бла"
        ["date_photo"]=>
        string(10) "22.07.2017"
        ["date_picture"]=>
        string(19) "2017-09-06 18:26:12"
      }
    }
  }
  [2]=>
  array(6) {
    ["album_id"]=>
    int(1)
    ["type"]=>
    int(1)
    ["album"]=>
    string(16) "я на море"
    ["usr_id"]=>
    int(1)
    ["date_album"]=>
    string(19) "2017-09-06 18:37:31"
    ["book"]=>
    array(4) {
      ["book_id"]=>
      int(1)
      ["book_name"]=>
      string(11) "книга1"
      ["alb_id"]=>
      int(1)
      ["photo"]=>
      array(8) {
        ["photo_id"]=>
        int(3)
        ["bk_id"]=>
        int(1)
        ["picture"]=>
        string(10) "photo3.jpg"
        ["url"]=>
        string(65) "188.225.82.218/content/users/albums/email/Я на море/book1/"
        ["location"]=>
        string(28) "Украина, Одесса"
        ["annotation"]=>
        string(13) "бла-бла"
        ["date_photo"]=>
        string(10) "22.07.2017"
        ["date_picture"]=>
        string(19) "2017-09-06 18:26:12"
      }
    }
  }
  [3]=>
  array(6) {
    ["album_id"]=>
    int(3)
    ["type"]=>
    int(1)
    ["album"]=>
    string(8) "дача"
    ["usr_id"]=>
    int(1)
    ["date_album"]=>
    string(19) "2017-09-07 13:10:19"
    ["book"]=>
    array(4) {
      ["book_id"]=>
      NULL
      ["book_name"]=>
      NULL
      ["alb_id"]=>
      NULL
      ["photo"]=>
      array(8) {
        ["photo_id"]=>
        NULL
        ["bk_id"]=>
        NULL
        ["picture"]=>
        NULL
        ["url"]=>
        NULL
        ["location"]=>
        NULL
        ["annotation"]=>
        NULL
        ["date_photo"]=>
        NULL
        ["date_picture"]=>
        NULL
      }
    }
  }
}

ad97e89f584345169e5dfc8381e87df6.jpg
в итоге на выходе должен быть один массив:

c 2 album_id, а не с 3мя, также в зависимости от альбома должны быть вложены в него book и в books фото

Прошу помощи как реализовать это
  • Вопрос задан
  • 138 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
thewind
@thewind
php программист, front / backend developer
array_walk, замыкания - знакомые слова?) один проход и всё
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы