如何根据php中的一组运行数得到逆值?

时间:2016-12-21 11:43:31

标签: php

例如,如果我有N个正在运行的号码,例如1至7或1至8。

左边是我拥有的,右边我希望转换为:

1 - 7
2 - 6
3 - 5
4 - 4
5 - 3
6 - 2
7 - 1

1 -> 8
2 -> 7
3 -> 6
4 -> 5
5 -> 4
6 -> 3
7 -> 2
8 -> 1

有一个简单的算法吗?

注意:我不是很容易拥有整个数组,但我确实拥有" base"在上面的例子中,如果真的需要,可以使用原因中的7或8来生成数组。

如果它有助于我的用例是这样的话。我有一个函数,它给了我一个介于1-7之间的整数值,但在同样的情况下,我需要反转(甚至不确定这是正确的单词)值(例如,获得2表示它应该转换为a 6)。

4 个答案:

答案 0 :(得分:0)

所以实际上你需要首先定义array,然后reverse数组,combine将整个数组定义为key value pair,这样你的代码就像

$main_arr = range(13,37);
$reversed_arr = array_reverse($main_arr);

$arr = array_combine($main_arr,$reversed_arr);

echo $arr[13].PHP_EOL; //37

echo $arr[37].PHP_EOL; //13

print_r($arr);

答案 1 :(得分:-1)

我在这里使用静态方法使其更易于使用,但您可以随心所欲地实现它。

这个想法只是玩数组的索引。如果您的阵列未确定,您必须找到创建该阵列的解决方案才能使用它。但你明白了我的观点。

解决方案

<?php

class Reverse {

    private static $arrayBase8 = [ 8, 7, 6, 5, 4, 3, 2, 1 ];
    private static $arrayBase7 = [ 7, 6, 5, 4, 3, 2, 1];

    public static function base8($number) {

        if ($number < 1) {

            return 0;

        }

        return self::$arrayBase8[$number - 1];

    }

    public static function base7($number) {

        if ($number < 1) {

            return 0;

        }

        return self::$arrayBase7[$number - 1];

    }

}

echo Reverse::base8(5);
echo '<br>';
echo Reverse::base7(5);

输出

4
3

文档

Online demo

PHP: array_reverse()

答案 2 :(得分:-1)

好吧,只需循环一个递增变量,直到到达基数:

<?php
$base = 7;
for ($i=1; $i<=$base; $i++) {
  echo sprintf("%d - %d".PHP_EOL, $i, $base-$i+1);
}

另一种方法是:

<?php
$base = 7;
for ($i=1; $i<=$base,$j=$base-$i+1; $i++) {
  echo sprintf("%d - %d".PHP_EOL, $i, $j);
}

显然的输出是:

1 - 7
2 - 6
3 - 5
4 - 4
5 - 3
6 - 2
7 - 1

注意:这些示例适用于CLI,用于在您需要将换行符从\n替换为<br>PHP_EOL 的Web环境中使用。

答案 3 :(得分:-2)

我不知道我是否理解你在寻找什么,但我认为这应该是一个解决方案:

$(this)

希望我理解得很好。