циклы — Как получить последовательные числа из массива в переполнении стека

У меня есть массив сказать
arr[]={1,2,3,4,6,7,8,10,11,12,13,14,16,17,18}
и мне нужно 3 блока, содержащих по 3 элемента в каждом. [3 будет динамическим] Выход должен быть

block[1]={1,2,3}
block[2]={6,7,8}
block[3]={10,11,12}

какой будет скрипт зацикливания в php

0

Решение

Вы могли бы использовать array_chunk

$arr = range(1, 18);
$result = array_chunk($arr, 3);
print_r($result);
1

Другие решения

использование array_chunk ()

$arr=[1,2,3,4,6,7,8,10,11,12,13,14,16,17,18];
unset($arr[3]); // unset key 4
$chunks = array_chunk($arr, 3,true);// pass true here
print_r($chunks);
1

$arr=[1,2,3,4,6,7,8,10,11,12,13,14,16,17,18];
$block = array_chunk($arr,3);
print_r($block);

Выход

Array
(
[0] => Array
(
[0] => 1
[1] => 2
[2] => 3
)

[1] => Array
(
[0] => 4
[1] => 6
[2] => 7
)

[2] => Array
(
[0] => 8
[1] => 10
[2] => 11
)

[3] => Array
(
[0] => 12
[1] => 13
[2] => 14
)

[4] => Array
(
[0] => 16
[1] => 17
[2] => 18
)

)

$block[] = array_slice($arr, 0, 3, true);
$block[] = array_slice($arr, 4, 3, true);
$block[] = array_slice($arr, 7, 3, true);
print_r($block);

Выход

Array
(
[0] => Array
(
[0] => 1
[1] => 2
[2] => 3
)

[1] => Array
(
[4] => 6
[5] => 7
[6] => 8
)

[2] => Array
(
[7] => 10
[8] => 11
[9] => 12
)

)

См .: демонстрация

0

Вы можете сделать это, используя только одну строку кода.

$array = array_chunk(array_slice($array, 0, 9), 3);

array_slice используется для вырезания части из 9 пар ключ-значение из вашего исходного массива.

array_chunk затем делит его на куски по 3 каждый.

Неправильный заказ?

Если ваш порядок массивов как-то неверен, приведенный выше код не будет работать. Чтобы решить эту проблему, вам сначала нужно sort ваш массив. Это можно сделать следующим образом:

$array = sort($array);

Вышеприведенная функция будет сортировать ваш массив по номеру от низкого до высокого.

Выполнение тестового прогона возвращает меня:

array(3) {
[0]=>
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
}
[1]=>
array(3) {
[0]=>
int(4)
[1]=>
int(5)
[2]=>
int(6)
}
[2]=>
array(3) {
[0]=>
int(7)
[1]=>
int(8)
[2]=>
int(9)
}
}

Ресурсы

0
По вопросам рекламы [email protected]