Генерация Относительная циклическая последовательность чисел в php? - PullRequest
0 голосов
/ 22 февраля 2019

Я хочу сгенерировать две последовательности чисел.У меня есть два параметра.

Первое : значение может быть любым числом от 1 до 12 включительно.

Второе : значение может быть любым числом между1-12 включительно.

Пример,

первый: 10, второй: 3,

Затем для вышеуказанных параметров я хочу два массива со значениями, как показано ниже,

10 11 12 1 2 3 4 5  6  7  8 9

3  4  5  6 7 8 9 10 11 12 1 2

Обновление: Мне нужна функция, которая принимает два числа в качестве параметра и выводит, как указано выше для массивов.

Есть ли какой-нибудь простой способ добиться этого?Я использую php и laravel.

Ответы [ 4 ]

0 голосов
/ 22 февраля 2019

Согласно вашему вводу, я создал функцию

function generateArrayRange($parameterOne='')
{
    //mimiminum number in array
    $minumumNumber = 1;
    //maximum number array  number in array
    $maximumNumber =12;
    //getting the first part of array
    $firstArrayDummyFirst = range($parameterOne, $maximumNumber);
    //getting the second  part of array
    $firstArrayDummySecond = range($minumumNumber, $parameterOne-1);
    //merging both to the single array 
    $parmOneArray = array_merge($firstArrayDummyFirst,$firstArrayDummySecond);
    //returing the generated array with unique
    return ($parmOneArray);
}

Ваш ввод может быть print_r(generateArrayRange(10));

Тогда результат будет

Array ( [0] => 10 [1] => 11 [2] => 12 [3] => 1 [4] => 2 [5] => 3 [6] => 4 [7] => 5 [8] => 6 [9] => 7 [10] => 8 [11] => 9 )

Ваш ввод может быть print_r(generateArrayRange(3));

Тогда результат будет

Array ( [0] => 3 [1] => 4 [2] => 5 [3] => 6 [4] => 7 [5] => 8 [6] => 9 [7] => 10 [8] => 11 [9] => 12 [10] => 1 [11] => 2 )

НО ВЫ ХОТИТЕ ПРОЙТИ ВТОРОЙ ПАРАМЕТР

Попробуйте эту функцию:

function transformToarray(int $parameterOne,int $parameterTwo = null)
{
    //mimiminum number in array
    $minumumNumber = 1;
    //maximum number array  number in array
    $maximumNumber =12;

    //getting the first part of array
    $firstArrayDummyFirst = range($parameterOne, $maximumNumber);
    //getting the second  part of array
    $firstArrayDummySecond = range($minumumNumber, $parameterOne-1);
    //merging both to the single array 
    $parmOneArray = array_merge($firstArrayDummyFirst,$firstArrayDummySecond);
    //returing the generated array with unique

    if (!empty($parameterTwo) || !is_null($parameterTwo) || $parameterTwo != "" ) 
    {  
       //getting the first part of array
        $secondArrayDummyFirst = range($parameterTwo, $maximumNumber);
        //getting the second  part of array
        $secondArrayDummySecond = range($minumumNumber, $parameterTwo-1);
        //merging both to the single array 
        $parmTwoArray = array_merge($secondArrayDummyFirst,$secondArrayDummySecond);
        //returing the generated array with unique

        return compact('parmOneArray','parmTwoArray');
    }
    return $parmOneArray;
}

PHP Fiddle

http://phpfiddle.org/main/code/chkx-qt4i

0 голосов
/ 22 февраля 2019

Вы можете использовать эту функцию:

function transform($array, int $start) {
    while ($array[0] != $start) {
       $number = array_shift($array);
       $array[] = $number;
    }

    return $array;
}

$first = transform(range(1, 12), 10);
$second = transform(range(1, 12), 3);
0 голосов
/ 22 февраля 2019
$first = 3;
$second = 10;
$limit = 12;

$count = 1;
$out1 = $first;


while($out1 <= $limit){

    if($out1 == $limit){
        echo $out1 . " ";

        while($count < $first){
            echo $count . " ";
            $count++;
        }

    }else{
        echo $out1 . " ";
    }
    $out1++;
}
echo "<br>";
$count = 1;
$out1 = $second;
while($out1 <= $limit){

    if($out1 == $limit){
        echo $out1 . " ";

        while($count < $second){
            echo $count . " ";
            $count++;
        }

    }else{
        echo $out1 . " ";
    }
    $out1++;
}
0 голосов
/ 22 февраля 2019

Вы можете использовать range:

$first = 5;
$firstArray = range(1,12);
for ($i = 1; $i < $first; $i++) {
    $firstArray[11] = array_shift($firstArray);
}
var_dump($firstArray);

, и вы делаете то же самое с массивом.

Для функции:

function shiftedArray($int)
{
    $int = $int % 12;
    $array = range(1,12);
    for ($i = 1; $i < $int; $i++) {
        $array[11] = array_shift($array);
    }
    return $array;
}

Просто позвонитедважды:

$firstArray = shiftedArray(10);
$secondArray = shiftedArray(3);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...