Как мне масштабировать существующий массив до определенного размера со значениями, повторяющимися как цикл? - PullRequest
0 голосов
/ 19 сентября 2018

Например, у меня есть этот массив ниже.Я хочу масштабировать этот массив до 364 и заполнить остальные ключи массива значениями в цикле, поэтому, как только мы закончим с 13 => 19, он продолжит переходить к 14 => 1, 15 => 2.Периодически, но до 364.

$recipeNumbers= array (
  0 => 1,
  1 => 2,
  2 => 3,
  3 => 6,
  4 => 7,
  5 => 8,
  6 => 11,
  7 => 12,
  8 => 14,
  9 => 15,
  10 => 16,
  11 => 17,
  12 => 18,
  13 => 19,
) 

Я пробовал это, но оно все еще показывает неопределенное при ошибке 14.

   $totalAvailableRecipeNumbers = count($recipeNumbers);
    $scaleAvailableRecipeNumbersToYearly = [];

    for ($i = 0; $i<365; $i++) {
        if ($i % $totalAvailableRecipeNumbers == 0) $i = 0;
        $scaleAvailableRecipeNumbersToYearly[$i] = $recipeNumbers[$i];
    }

    logger($scaleAvailableRecipeNumbersToYearly);

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

Вы не возражаете, я переписал это так:

<?php

$list = "
 1
 2
 3
 6
 7
 8
 11
 12
 14
 15
 16
 17
 18
 19
";

//make an array from a string list
$templates = array_values(array_filter(array_map('trim', explode("\n", $list))));

$temp = null;
foreach (range(0, 364) as $number) {
  $temp[] = $templates[$number%14];
}

print_r($temp);
0 голосов
/ 19 сентября 2018

Вы очень близки к желаемому выходу, просто немного измените

<?php
$count = count($totalAvailableRecipeNumbers); //count array values

$values = array_values($totalAvailableRecipeNumbers); // get the values from array

$j=0; //start a counter
for($i=0;$i<365;$i++){ // start iteration from 0 to 364
  if($j == $count) $j=0; // when counter equals to array count restart it from 0 again
  $scaleAvailableRecipeNumbersToYearly[$i] = $values[$j];// assign values from the values array what we have get through array_values()
  $j++; // increase counter
}

print_r($scaleAvailableRecipeNumbersToYearly); // print array

Выход: - https://eval.in/1058686 или https://3v4l.org/7bchN

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