例如,如果我有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)。
答案 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
答案 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)
希望我理解得很好。