关于#PHP#的问题,如何解决?

帮忙给写个PHP的循环,想跟着学习学习。$dingdanshuliang达到10的时候重新从commission11循环


```php
if($dingdanshuliang==1 && $agleveldata1) $ogupdate['parent1commission'] = $commissiondata[$agleveldata1['id']]['commission11'] * $commission_totalprice * 0.01;
                            if($dingdanshuliang==2 && $agleveldata1) $ogupdate['parent1commission'] = $commissiondata[$agleveldata1['id']]['commission12'] * $commission_totalprice * 0.01;
                            if($dingdanshuliang==3 && $agleveldata1) $ogupdate['parent1commission'] = $commissiondata[$agleveldata1['id']]['commission13'] * $commission_totalprice * 0.01;
                            if($dingdanshuliang==4 && $agleveldata1) $ogupdate['parent1commission'] = $commissiondata[$agleveldata1['id']]['commission14'] * $commission_totalprice * 0.01;
                            if($dingdanshuliang==5 && $agleveldata1) $ogupdate['parent1commission'] = $commissiondata[$agleveldata1['id']]['commission15'] * $commission_totalprice * 0.01;
                            if($dingdanshuliang==6 && $agleveldata1) $ogupdate['parent1commission'] = $commissiondata[$agleveldata1['id']]['commission16'] * $commission_totalprice * 0.01;
                            if($dingdanshuliang==7 && $agleveldata1) $ogupdate['parent1commission'] = $commissiondata[$agleveldata1['id']]['commission17'] * $commission_totalprice * 0.01;
                            if($dingdanshuliang==8 && $agleveldata1) $ogupdate['parent1commission'] = $commissiondata[$agleveldata1['id']]['commission18'] * $commission_totalprice * 0.01;
                            if($dingdanshuliang==9 && $agleveldata1) $ogupdate['parent1commission'] = $commissiondata[$agleveldata1['id']]['commission19'] * $commission_totalprice * 0.01;    



if($dingdanshuliang==10 && $agleveldata1) $ogupdate['parent1commission'] = $commissiondata[$agleveldata1['id']]['commission11'] * $commission_totalprice * 0.01;
                            if($dingdanshuliang==11 && $agleveldata1) $ogupdate['parent1commission'] = $commissiondata[$agleveldata1['id']]['commission12'] * $commission_totalprice * 0.01;
                            if($dingdanshuliang==12 && $agleveldata1) $ogupdate['parent1commission'] = $commissiondata[$agleveldata1['id']]['commission13'] * $commission_totalprice * 0.01;
                            if($dingdanshuliang==13 && $agleveldata1) $ogupdate['parent1commission'] = $commissiondata[$agleveldata1['id']]['commission14'] * $commission_totalprice * 0.01;
                            if($dingdanshuliang==14 && $agleveldata1) $ogupdate['parent1commission'] = $commissiondata[$agleveldata1['id']]['commission15'] * $commission_totalprice * 0.01;
                            if($dingdanshuliang==15 && $agleveldata1) $ogupdate['parent1commission'] = $commissiondata[$agleveldata1['id']]['commission16'] * $commission_totalprice * 0.01;
                            if($dingdanshuliang==16 && $agleveldata1) $ogupdate['parent1commission'] = $commissiondata[$agleveldata1['id']]['commission17'] * $commission_totalprice * 0.01;
                            if($dingdanshuliang==17 && $agleveldata1) $ogupdate['parent1commission'] = $commissiondata[$agleveldata1['id']]['commission18'] * $commission_totalprice * 0.01;
                            if($dingdanshuliang==18 && $agleveldata1) $ogupdate['parent1commission'] = $commissiondata[$agleveldata1['id']]['commission19'] * $commission_totalprice * 0.01;

```

模运算

if ($agleveldata1) {
    $index = ($dingdanshuliang % 10 == 0) ? 10 : $dingdanshuliang % 10;
    $ogupdate['parent1commission'] = $commissiondata[$agleveldata1['id']]["commission1{$index}"] * $commission_totalprice * 0.01;
}


$index用于存储想用的commission的编号。当$dingdanshuliang是10的倍数时,设置$index为10,否则设置$index为$dingdanshuliang除以10的余数。
这样使得代码更加简洁,避免了大量的重复的if条件语句。

基于new bing部分指引作答:
你可以使用循环结构来简化这段代码。在这种情况下,你可以使用for循环来实现。以下是使用for循环来重写你的代码的示例:

if ($agleveldata1) {
    $commissionKey = 'commission' . (($dingdanshuliang - 1) % 9 + 11);
    $ogupdate['parent1commission'] = $commissiondata[$agleveldata1['id']][$commissionKey] * $commission_totalprice * 0.01;
}

这段代码将根据$dingdanshuliang的值选择正确的commission键,并将计算结果赋值给$ogupdate['parent1commission']变量。循环的范围是从11到19,当$dingdanshuliang达到10时,会循环回11。

希望这可以帮助你!


可以使用取余运算符(%)来实现循环计数。以下是一个基于你提供的代码片段进行修改后的示例:

php
Copy Code
if ($agleveldata1) {
    $commission_index = ($dingdanshuliang - 1) % 9 + 1; // 计算 commission 数据索引,范围为 1 到 9
    $commission_key = 'commission' . $commission_index;
    $ogupdate['parent1commission'] = $commissiondata[$agleveldata1['id']][$commission_key] * $commission_totalprice * 0.01;
}
这里使用了 $commission_index 变量来计算 commission 数据的索引,通过取余运算符(%)和加法操作,可以实现 $dingdanshuliang 的循环计数,并在每个循环周期内重新从 commission11 开始。同时使用字符串拼接的方式构造 commission 数据的键名。

你可以使用for循环来简化你的代码。在每次循环中,你可以根据$dingdanshuliang的值来选择相应的commission,并将其乘以$commission_totalprice和0.01赋给$ogupdate['parent1commission']。当$dingdanshuliang达到10时,重新从commission11开始循环。

下面是使用for循环的示例代码:

if ($agleveldata1) {
    for ($i = 1; $i <= 18; $i++) {
        $commissionKey = 'commission' . (($i % 9) + 10);
        if ($dingdanshuliang == $i) {
            $ogupdate['parent1commission'] = $commissiondata[$agleveldata1['id']][$commissionKey] * $commission_totalprice * 0.01;
            break;
        }
    }
}

这样,你不需要逐个判断$dingdanshuliang的值,而是通过循环自动选择相应的commission。

因为没法测试,写一个示例代码

$commission = 'commission11';

for ($dingdanshuliang = 1; $dingdanshuliang < 20; $dingdanshuliang++) {
    if ($agleveldata1) {
        $ogupdate['parent1commission'] = $commissiondata[$agleveldata1['id']][$commission] * $commission_totalprice * 0.01;
    }

    if ($dingdanshuliang % 10 == 0) { 
        // 当订单数量为10的倍数时,重新开始循环
        $commission = 'commission' . (11 + ($dingdanshuliang / 10) - 1);
    }
}

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    首先,问题要求在$dingdanshuliang达到10时重新从commission11开始循环。根据问题描述,我们可以使用循环和条件判断来实现这个需求。

    以下是一个示例代码:

    $dingdanshuliang = 1; // 初始化订单数量为1
    $commission = 11; // 初始化佣金值为11
    
    for ($i = 0; $i < 20; $i++) { // 循环执行20次,这里只是一个示例,可以根据实际情况修改循环次数
        echo "订单数量: $dingdanshuliang, 佣金: $commission" . PHP_EOL;
    
        // 判断订单数量是否达到10,如果达到则重置为1,并且将佣金值设为11
        if ($dingdanshuliang >= 10) {
            $dingdanshuliang = 1;
            $commission = 11;
        } else {
            $dingdanshuliang++; // 订单数量+1
            $commission++; // 佣金+1
        }
    }
    

    在上面的示例代码中,我们使用一个for循环来模拟执行20次操作,你可以根据实际情况修改循环次数。在循环体内部,我们首先输出当前的订单数量和佣金值。然后,我们使用条件判断来判断订单数量是否达到10,如果达到,我们将订单数量重置为1,并将佣金值设为11;如果没有达到,我们将订单数量和佣金值都加1。这样就实现了循环的需求。

    希望以上代码能够满足你的需求。如果你有任何疑问,请随时询问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
if ($agleveldata1) {
    for ($i = 1; $i <= 18; $i++) {
        if ($dingdanshuliang == $i) {
            $commissionKey = 'commission' . $i;
            $ogupdate['parent1commission'] = $commissiondata[$agleveldata1['id']][$commissionKey] * $commission_totalprice * 0.01;
            break;
        }
    }
}