наверное чего-то не видно У меня есть два массива:
$grid =
Array
(
[0] => 3
[1] => 2
[2] => 3
[3] => 2
)
$elements =
Array
(
[0] => 24426
[1] => 25015
[2] => 24422
[3] => 24425
[4] => 24531
[5] => 24421
[6] => 24530
[7] => 24532
[8] => 25016
[9] => 24418
)
В основном идея состоит в том, чтобы иметь что-то подобное для каждого значения $grid значений $elements. Например, три цикла [0] => 3 дадут мне 24426,25015,24422. Теперь вот загвоздка: для второго результата [1] => 2 мне нужно получить только два значения, но исключая предыдущие значения трех $elements, которые повторяются. Так что в основном на второй итерации я бы получил 24425,24531.
ВНИМАНИЕ: значения $grid могут быть 1 , 2 ,3 ....300...n;
Результирующий массив должен быть таким:
Array
(
[0] => 3,24426
[1] => 3,25015
[2] => 3,24422
[3] => 2,24425
[4] => 2,24531
[5] => 3,24421
[6] => 3,24530
[7] => 3,24532
[8] => 2,25016
[9] => 2,24418
)
Обновлено: слегка изменен код, чтобы соответствовать требуемому выходному формату
Пожалуйста, рассмотрите этот код.
$grid = [3, 2, 3, 2];
$elements = [24426,25015,24422,24425,24531,24421,24530,24532,25016,24418];
$result = [];
foreach($grid as $take) {
$org_take = $take;
while($take-- > 0) {
if (empty($elements)) {
throw new Exception('Not enough elements');
}
$result[] = sprintf('%d,%d', $org_take, array_shift($elements));
}
}
print_r($result);
Дает результат:
Array (
[0] => 3,24426
[1] => 3,25015
[2] => 3,24422
[3] => 2,24425
[4] => 2,24531
[5] => 3,24421
[6] => 3,24530
[7] => 3,24532
[8] => 2,25016
[9] => 2,24418
)
Возьмите значения из массива (удалите их) и поместите результаты во второй массив.