繁体   English   中英

PHP的多个if else语句如何组合成一个功能?

[英]php multiple if else statement how to combine into one function?

我得到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;
}
?>

我认为您根本不需要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,其余的保持不变(要mod12 ,如果对mod12的输入,例如$r1a+$r2a+$r3a是12的倍数,它将返回1,在其他情况下,它将返回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);

如果我对您要达到的目标了解得很清楚,那么应该可以:

$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
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM