如题,是这种布局形式
1 2 3
4 5 6
7 8 9
相邻元素颜色不同,还有就是,比如5的话,跟1 3 7 9 的颜色也要不同,请问这个如何实现,生成随机颜色可以的,但是颜色不同如何实现呢。备选的颜色大概6种。谢谢php 随机 php随机

解决方案 »

  1.   

    页面使用的是masonry和infinitescroll,每排三个块,宽度固定,高度不定。然后要实现相邻的背景色不同,不知道具体如何实现呢?
      

  2.   

    $d = array(1,2,3,4,5,6);
    $a = array($d[rand(0, 5)]);$loop = 300; //用于防止死循环
    while(count($a) < 210 && $loop--) {
      $p = count($a);
      $n = $d[0];
      $d[] = array_shift($d);
      switch($p % 3) {
        case 1:
          if($a[$p-1] == $n) continue;
          if(isset($a[$p-3]) && $a[$p-3] == $n) continue;
      $a[] = $n;
          break;
        case 2:
          if($a[$p-1] == $n) continue;
          if(isset($a[$p-2]) && $a[$p-2] == $n) continue;
          if(isset($a[$p-3]) && $a[$p-3] == $n) continue;
          if(isset($a[$p-6]) && $a[$p-6] == $n) continue;
          if(isset($a[$p-8]) && $a[$p-8] == $n) continue;
          $a[] = $n;
          break;
        case 0:
          if(isset($a[$p-3]) && $a[$p-3] == $n) continue;
          if(isset($a[$p-4]) && $a[$p-4] == $n) continue;
          if(isset($a[$p-6]) && $a[$p-6] == $n) continue;
          $a[] = $n;
          break;
      }
    //  $a[] = $n; //如果从case中移到这里,将导致错误结果!BUG
    }
    $t = array_map(function($r){ return join(',', $r);}, array_chunk($a, 3));
    print_r($t);
    Array
    (
        [0] => 1,2,3
        [1] => 4,5,6
        [2] => 2,3,4
        [3] => 5,6,1
        [4] => 3,4,5
        [5] => 6,1,2
        [6] => 4,5,6
        [7] => 1,2,3
        [8] => 5,6,1
        [9] => 2,3,4
        [10] => 6,1,2
        [11] => 3,4,5
        [12] => 1,2,3
        [13] => 4,5,6
        [14] => 2,3,4
        [15] => 5,6,1
        [16] => 3,4,5
        [17] => 6,1,2
        [18] => 4,5,6
        [19] => 1,2,3
        [20] => 5,6,1
        [21] => 2,3,4
        [22] => 6,1,2
        [23] => 3,4,5
        [24] => 1,2,3
        [25] => 4,5,6
        [26] => 2,3,4
        [27] => 5,6,1
        [28] => 3,4,5
        [29] => 6,1,2
        [30] => 4,5,6
        [31] => 1,2,3
        [32] => 5,6,1
        [33] => 2,3,4
        [34] => 6,1,2
        [35] => 3,4,5
        [36] => 1,2,3
        [37] => 4,5,6
        [38] => 2,3,4
        [39] => 5,6,1
        [40] => 3,4,5
        [41] => 6,1,2
        [42] => 4,5,6
        [43] => 1,2,3
        [44] => 5,6,1
        [45] => 2,3,4
        [46] => 6,1,2
        [47] => 3,4,5
        [48] => 1,2,3
        [49] => 4,5,6
        [50] => 2,3,4
        [51] => 5,6,1
        [52] => 3,4,5
        [53] => 6,1,2
        [54] => 4,5,6
        [55] => 1,2,3
        [56] => 5,6,1
        [57] => 2,3,4
        [58] => 6,1,2
        [59] => 3,4,5
        [60] => 1,2,3
        [61] => 4,5,6
        [62] => 2,3,4
        [63] => 5,6,1
        [64] => 3,4,5
        [65] => 6,1,2
        [66] => 4,5,6
        [67] => 1,2,3
        [68] => 5,6,1
        [69] => 2,3,4
    )
    任何连续三行都将满足你的需要弄了几天,终于发现一个 php 的 bug
    还是比较满意的如果基本的语法结构都会出现问题的话,php 到了该进坟墓的时候了!