假如有五个数字:1,2,3,4,5,要保存到数组中,结果如下:数组1:2,3,4,5
数组2:1,3,5
数组3:1,2,3,4,5
数组4:1,2,4一共有4个数组,我的目的是把这5个数字在这四个数组中每个数字都出现3次,这样有一个数组不存在了,从其它数组也能把所有数字取出来。我不需要代码,只要有思路就行,谢谢各位达人。

解决方案 »

  1.   

    本帖最后由 xuzuning 于 2012-09-24 12:15:03 编辑
      

  2.   

    本帖最后由 xuzuning 于 2012-09-24 13:00:30 编辑
      

  3.   

    1、我给出的数据就是你的,只是加入了顺序号(下标)
    2、按你补充描述,只要按 raid5 做就可以了,这样相当于 3 台服务器存储数据,1台服务器存储校验和
    利用率是很高的
      

  4.   

    本帖最后由 xuzuning 于 2012-09-24 13:39:23 编辑
      

  5.   

    $a=Array(1,2,3,4,5,6,7);
    $b=&$a;
    $c=&$a;
    Print_r ($c);
    这样不行吗?
      

  6.   

    $ar = array( 1, 2, 3, 4, 5, 6, 7);
    for($i=0; $i<count($ar); $i++) {
      $j = $i+1;
      $r[$j++ % 4][$i] = $ar[$i];
      $r[$j++ % 4][$i] = $ar[$i];
      $r[$j++ % 4][$i] = $ar[$i];
    }
    print_r($r);Array
    (
        [1] => Array
            (
                [0] => 1
                [2] => 3
                [3] => 4
                [4] => 5
                [6] => 7
            )    [2] => Array
            (
                [0] => 1
                [1] => 2
                [3] => 4
                [4] => 5
                [5] => 6
            )    [3] => Array
            (
                [0] => 1
                [1] => 2
                [2] => 3
                [4] => 5
                [5] => 6
                [6] => 7
            )    [0] => Array
            (
                [1] => 2
                [2] => 3
                [3] => 4
                [5] => 6
                [6] => 7
            ))
      

  7.   


    <?php
    function split2Array($n, $repeat = 3)
    {
    $result = array();
    for($i = 0; $i < $n; $i++)
    {
    for($j = 0; $j < $repeat; $j++)
    {
    $result[($i + $j) % ($repeat + 1)][$i] = $i + 1;
    }
    }
    return $result;
    }
    print_r(split2Array(7, 4));
    ?>