0

我有这个循环:

   $diffe = $differenz*7;  
    $diff = 0; 
    $n = 0;
    $an = $anzahl-1;
    $z = 0;
    $plus = $periode;
    $oarray = array();
    $sarray = array();
    $parray = array();
    $h = 0;

    while ($n < $ortcount) {
    foreach ($ortearray as $o) {
    $oarray[] = $o;
    }
    $sarray[] = get_start_dates($star, $diff, $wochearray); 
    $diff += $diffe;

    while ($h < $ortcount) {
    $helpingstring= join(";",$sarray[$h]);
    echo $h;
    $sarrayhelp = explode(";", $helpingstring);

    while ($z < $an) {

    foreach ($sarrayhelp as $s) {         
    $parray[] = plustime($s, $plus);        

    }
    $plus = $plus+$periode;
    $z++;

    }
    $h++;
    }

    $n++;

    }

并需要以下内容:

多维数组“$sarray[]”的每个“子数组”都应由 plustime() 函数逐步处理,结果应保存到“$parray[]”。

此时,只处理“$sarray[]”的第一个子数组。

任何帮助将不胜感激。请帮忙!

4

1 回答 1

2

制作递归函数:

function process(&$parray, $array, $plus){
  foreach($array as $s) {
    if(is_array($s)) {
      // this is subarray
      process($parray, $s, $plus);
      continue ;
    }
    $parray[] = plustime($s, $plus);
  }
}

.....
while ($z < $an) {
  process($parray, $sarrayhelp, $plus);
  ..

请注意,糟糕的缩进和短变量 ( $a, $az,$n, $an, $h, $z, $parray, $oarray, $diff, $diffe) 会使您的代码非常难以维护和被他人理解。

于 2012-09-01T17:18:12.437 回答