本帖最后由 hjzdhr 于 2010-12-07 16:14:47 编辑

解决方案 »

  1.   


    可以参考google日历, 就是计算日历每行是几个事件的高度.
      

  2.   

    绕蒙是外层将你蒙的, 你问的问题是怎么处理. 内层的处理仅仅是一个case (条件). 或endif(条件).
    如果让别人再去想外层, 那相应于写一个日历~你可以多加些注释, 比如说, 这是//外层第一层来区分对持. 
      

  3.   

    <?php
    $week = array(0,10,10,10,8);
    print_r($week);
    // 保证每周最少为一行。
    for ($i=0;$i<5;$i++){
      if($week[$i] <=0){
        $week[$i] = 1;
      }
    }
    //当总行数小于30时,最少的行数+1 至到30行为止
    while  (array_sum($week) < 30 ){
      for ($i=0;$i<5 ;$i++){
        if($week[$i] == min($week)){
          $week[$i]++ ;
          break;
        }
      }
    }
    //当总行数大于30时,最多的行数-1 至到30行为止
    while  (array_sum($week) > 30 ){
      for ($i=0;$i<5 ;$i++){
        if($week[$i] == max($week)){
          $week[$i]-- ;
          break;
        }
      }
    }
    print_r($week);
    ?>