簡體   English   中英

如何簡化嵌套循環?

[英]How to simplify a nested loops?

我目前正在遍歷2個范圍。

$arr1 = range(1500, 1505);
$start = 1;
$end = 10;

foreach ($arr1 as $block) {

  for ($i = $start; $i <= $end; $i++) {

    echo $block . $i; // output -> 15001,15002,15003 ... 15011, 15012 ...

  }

}

有沒有更簡單/更有效的方法來做到這一點?

我相信您可以這樣做:

for($start = 15001; $start < 15061 ; $start = $start + 10 ) {
    $arr = range($start, $start + 8);
    $arr[] = $start * 10;
    echo implode(" ", $arr) . PHP_EOL;
}

但是,我仍然沒有得到您嘗試創建的模式...

另一種稍微有效的方法是一次創建整個范圍。 然后使用取modulo確定可被10整除的值,並使用數學輸出所需的替代值。

范例: https//3v4l.org/L10Jq

foreach (range(15001, 15060) as $v) {
    if (0 === $v % 10) {
        echo ($v - 9) * 10 . \PHP_EOL;
    } else {
        echo $v . ' ';
    }
}

結果:

15001 15002 15003 15004 15005 15006 15007 15008 15009 150010
15011 15012 15013 15014 15015 15016 15017 15018 15019 150110
15021 15022 15023 15024 15025 15026 15027 15028 15029 150210
15031 15032 15033 15034 15035 15036 15037 15038 15039 150310
15041 15042 15043 15044 15045 15046 15047 15048 15049 150410
15051 15052 15053 15054 15055 15056 15057 15058 15059 150510

要創建單個數組,請按引用傳遞值$v ,刪除echo調用,然后在條件語句中重新分配該值。

$ar = range(15001, 15060);
foreach ($ar as &$v) {
    if (0 === $v % 10) {
        $v = ($v - 9) * 10;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM