как изменить формат массива в коллекцию как каждый элемент в laravel - PullRequest
2 голосов
/ 08 ноября 2019

У меня есть массив коллекций, как показано ниже:

array:9 [▼
  0 => Collection {#990 ▶}
  1 => Collection {#1109 ▶}
  2 => Collection {#1221 ▶}
  3 => Collection {#1331 ▶}
  4 => Collection {#1442 ▶}
  5 => Collection {#1554 ▶}
  6 => Collection {#1664 ▶}
  7 => Collection {#1775 ▶}
  8 => Collection {#1887 ▶}
]

Я хочу сделать эту коллекцию единой и сделать каждую коллекцию 1 элементом этой коллекции. То, что я пробовал, это collect($f), но я получаюрезультат, как показано ниже:

Collection {#1443 ▼
  #items: array:9 [▼
    0 => Collection {#990 ▶}
    1 => Collection {#1109 ▶}
    2 => Collection {#1221 ▶}
    3 => Collection {#1331 ▶}
    4 => Collection {#1442 ▶}
    5 => Collection {#1554 ▶}
    6 => Collection {#1664 ▶}
    7 => Collection {#1775 ▶}
    8 => Collection {#1887 ▶}
  ]
}

Теперь я хочу знать, как я могу сделать эту 1 коллекцию и сделать все эти 8 коллекций как элементы этой коллекции, как показано ниже:

Collection {#990 ▼
  #items: array:1 [▼
    0 => RoomPricingHistory {#971 ▶}
    1 => RoomPricingHistory {#971 ▶}
    2 => RoomPricingHistory {#971 ▶}
    3 => RoomPricingHistory {#971 ▶}
    4 => RoomPricingHistory {#971 ▶}

  ]
}

спасибо

Ответы [ 2 ]

1 голос
/ 08 ноября 2019

Получив коллекцию коллекций, вы можете использовать flatten , чтобы получить все элементы базовых коллекций в родительской коллекции.

collect($f)->flatten(1);
1 голос
/ 08 ноября 2019

Я не уверен, что это то, что вам нужно.

  1. Сначала, используя ремесленника, я сделаю коллекцию коллекций. Каждая коллекция имеет один элемент массива [1]
$ php artisan tinker
>>> $a = collect(1)
=> Illuminate\Support\Collection {#3205
     all: [
       1,
     ],
   }
>>> collect(array($a,$a,$a,$a,$a,$a,$a))
=> Illuminate\Support\Collection {#3218
     all: [
       Illuminate\Support\Collection {#3205
         all: [
           1,
         ],
       },
       Illuminate\Support\Collection {#3205},
       Illuminate\Support\Collection {#3205},
       Illuminate\Support\Collection {#3205},
       Illuminate\Support\Collection {#3205},
       Illuminate\Support\Collection {#3205},
       Illuminate\Support\Collection {#3205},
     ],
   }
Теперь, чтобы получить только массив этих элементов, я использую метод flatten().
>>> collect(array($a,$a,$a,$a,$a,$a,$a))->flatten()
=> Illuminate\Support\Collection {#3220
     all: [
       1,
       1,
       1,
       1,
       1,
       1,
       1,
     ],
   }

Метод flatten принимает необязательный параметр глубины,Подробнее об этом читайте в документации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...