0

if else ステートメントが 7 つあるのですが、それを 1 つの関数ファイルにコンパイルする方法を教えてください。そのため、長くて厄介なコードではなく、関数をトリガーするだけです。

以下は私のコードです:

<?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;
}
?>

私が抱えている2番目の問題は、すべてを合計することです。3つの値を持つ7つの垂直行と、追加する2つの値を持つ別の5つの行があります。合計値が 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

あなたが達成しようとしていることをよく理解していれば、これはうまくいくはずです:

$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 に答える
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 にしただけで、残りはそのままにしている 2 番目の質問に答えてください (明確にするために、eg への入力mod12$r1a+$r2a+$r3a12 の倍数の場合は 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 に答える