Я хочу получить элементы из массива в порядке: три, четыре, три, четыре и т. Д. - PullRequest
0 голосов
/ 14 января 2020

Я хочу получить элементы из массива следующим образом: получить первые три элемента, затем четыре элемента, затем снова три элемента, и снова четыре, и так далее в al oop.

Например:

0 1 2 

3 4 5 6

7 8 9

10 11 12 13

and so on....

Я пробовал что-то вроде этого:

foreach($items as $key => $item) {
    if($key <= 2) {
      echo 'test';
    }

    if($key > 2 && $key < 6) {
      echo 'other test';                            
    }

    if($key > 6 && $key < 9) {
      echo 'test';                            
    }  
}

Однако я не хочу использовать if() как это, потому что я не знаю, сколько предметов будет в массиве: он поступает из базы данных.

Я думаю, мне нужно что-то вроде array_chunk($items, 3), но для параметра размера мне нужны 3 и 4 в l oop

Ответы [ 2 ]

0 голосов
/ 14 января 2020

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

<?php

$number_of_elements = [3,4,3,4];

$your_array = ['a', 'b','c','d','e'];

foreach($number_of_elements as $number){

for($i = 0; $i<=$number; $i++){

    $result = $your_array[$i];
    print_r($result);
} 

print_r('<br>');

}
0 голосов
/ 14 января 2020

В JavaScript вы можете решить вашу проблему, используя для l oop и встроенную функцию среза массива.

const array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];
let offset = 0;

for(let i = 0; i < array.length;){
  offset = offset === 3 ? 4 : 3;
  const subArray = array.slice(i, i + offset);
  console.log(subArray);
  i += offset;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...