0

我得到了 7 个 if else 语句,我可以知道如何将它编译成一个函数文件吗?所以我只是触发函数而不是冗长而混乱的代码。

以下是我的代码:

<?php
$r1a = $_POST['rowone'];
if ($r1a<7) {
    $r2a=$r1a+1;
    } else {
    $r2a=$r1a+1-7;
}
if ($r2a<7) {
    $r3a=$r2a+1;
    } else {
    $r3a=$r2a+1-7;
}
if ($r3a<7) {
    $r4a=$r3a+1;
    } else {
    $r4a=$r3a+1-7;
}
if ($r4a<7) {
    $r5a=$r4a+1;
    } else {
    $r5a=$r4a+1-7;
}
if ($r5a<7) {
    $r6a=$r5a+1;
    } else {
    $r6a=$r5a+1-7;
}
if ($r6a<7) {
    $r7a=$r6a+1;
    } else {
    $r7a=$r6a+1-7;
}
?>

我遇到的第二个问题是加在一起,有 7 个垂直行有 3 个值,另外 5 个行有 2 个值要相加。我在这里找到了我的代码,如果总值为 12,由于我的代码 -12,它将显示 0。如果值为12,是否有人我要更改代码,结果将+1-12?谢谢!

<?php
$r4a = $r1a+$r2a+$r3a;
if ($r4a<12) {
    $r4a=$r4a;
        } else {
    $r4a=$r4a-12;
}
$r4b = $r1b+$r2b+$r3b;
if ($r4b<12) {
    $r4b=$r4b;
        } else {
    $r4b=$r4b-12;
}
$r4c = $r1c+$r2c+$r3c;
if ($r4c<12) {
    $r4c=$r4c;
        } else {
    $r4c=$r4c-12;
}
$r4d = $r1d+$r2d+$r3d;
if ($r4d<12) {
    $r4d=$r4d;
        } else {
    $r4d=$r4d-12;
}
$r4e = $r1e+$r2e+$r3e;
if ($r4e<12) {
    $r4e=$r4e;
        } else {
    $r4e=$r4e-12;
}
$r4f = $r1f+$r2f+$r3f;
if ($r4f<12) {
    $r4f=$r4f;
       } else {
    $r4f=$r4f-12;
}
$r4g = $r1g+$r2g+$r3g;
if ($r4g<12) {
    $r4g=$r4g;
        } else {
    $r4g=$r4g-12;
}
$r4h = $r2h+$r3h;
if ($r4h<12) {
    $r4h=$r4h;
        } else {
    $r4h=$r4h-12;
}
$r4i = $r2i+$r3i;
if ($r4i<12) {
    $r4i=$r4i;
        } else {
    $r4i=$r4i-12;
}
$r4j = $r2j+$r3j;
if ($r4j<12) {
    $r4j=$r4j;
        } else {
    $r4j=$r4j-12;
}
$r4k = $r2k+$r3k;
if ($r4k<12) {
    $r4k=$r4k;
        } else {
    $r4k=$r4k-12;
}
$r4l = $r2l+$r3l;
if ($r4l<12) {
    $r4l=$r4l;
        } else {
    $r4l=$r4l-12;
}
?>
4

2 回答 2

0

我认为你根本不需要if。模运算应该可以为您解决。

function inc($a) {
    return ($a % 7)+1;
}

$r1a = $_POST['rowone'];
$r2a = inc($r1a);
$r3a = inc($r2a);
$r4a = inc($r3a);
$r5a = inc($r4a);
$r6a = inc($r5a);
$r7a = inc($r6a);

代码尚未经过测试,但您大致了解。

另一种选择:

$v = $_POST['rowone'];
$arr = array(1, 2, 3, 4, 5, 6, 7);
$b = array_slice($arr, 0, $v-1);
$arr = array_slice($arr, $v-1);
$arr = array_merge($arr, $b);
print_r($arr);

回答你的第二个问题,我只将 0 变为 1,其余部分保持原样(为了澄清,如果输入mod12eg$r1a+$r2a+$r3a是 12 的倍数,它将返回 1,在其他情况下,它将返回一个标准,modulo 12例如 13 将变成 1):

function mod12($a) {
    $m = $a % 12;
    if ($m == 0) {
        return 1;
    }else {
        return $m;
    }
}

$r4a = mod12($r1a+$r2a+$r3a);
$r4b = mod12($r1b+$r2b+$r3b);
$r4c = mod12($r1c+$r2c+$r3c);
$r4d = mod12($r1d+$r2d+$r3d);
$r4e = mod12($r1e+$r2e+$r3e);
$r4f = mod12($r1f+$r2f+$r3f);
$r4g = mod12($r1g+$r2g+$r3g);
$r4h = mod12($r2h+$r3h);
$r4i = mod12($r2i+$r3i);
$r4j = mod12($r2j+$r3j);
$r4k = mod12($r2k+$r3k);
$r4l = mod12($r2l+$r3l);
于 2013-08-21T18:05:44.077 回答
0

如果我很好地理解了你试图达到的目标,这应该有效:

$r1a = $_POST['rowone'];
for ( $i = 1; $i < 7; $i++ ){
  $cur = 'r'.$i.'a';
  $next = 'r'.($i+1).'a';
  $$next = $$cur < 7 ? $$cur+1 : $$cur+1-7
}
于 2013-08-21T18:12:39.827 回答