dongmo9996 2013-02-07 19:30
浏览 45
已采纳

PHP中的数组碎片[关闭]

I have array like this:

array(8) {
  ["2013-01-02"]  =>  27.62,
  ["2013-01-03"]  =>  27.25,
  ["2013-01-04"]  =>  26.74,
  ["2013-01-07"]  =>  26.69,
  ["2013-01-08"]  =>  26.55,
  ["2013-01-09"]  =>  26.70,
  ["2013-01-10"]  =>  26.46,
  ["2013-01-11"]  =>  26.83
}

And I want to find all variations by n.

For example result for n=3:

array(6) {  
  array(3) {
    ["2013-01-02"]  =>  27.62,
    ["2013-01-03"]  =>  27.25,
    ["2013-01-04"]  =>  26.74    
  }
  array(3) {
    ["2013-01-03"]  =>  27.25,
    ["2013-01-04"]  =>  26.74,
    ["2013-01-07"]  =>  26.69
  }
  array(3) {
    ["2013-01-04"]  =>  26.74,
    ["2013-01-07"]  =>  26.69,
    ["2013-01-08"]  =>  26.55
  }
  array(3) {
    ["2013-01-07"]  =>  26.69,
    ["2013-01-08"]  =>  26.55,
    ["2013-01-09"]  =>  26.70
  }
  array(3) {
    ["2013-01-08"]  =>  26.55,
    ["2013-01-09"]  =>  26.70,
    ["2013-01-10"]  =>  26.46
  }
  array(3) {
    ["2013-01-09"]  =>  26.70,
    ["2013-01-10"]  =>  26.46,
    ["2013-01-11"]  =>  26.83
  }
}

How can I easily do this in PHP?

That's all, but I can't submit it without this: In computer science, an associative array, map, or dictionary is an abstract data type composed of a collection of (key, value) pairs, such that each possible key appears at most once in the collection.

  • 写回答

1条回答 默认 最新

  • dongruo4601 2013-02-07 19:33
    关注

    Take your old array and build a new one with various calls to array_slice(), like this:

    $new_array = array();
    $n = 3;
    $size = count( $old_array) - $n; // Assumes you have at least $n elements, should check for this
    for( $i = 0; $i <= $size; $i++) {
        $new_array[] = array_slice( $old_array, $i, $n);
    }
    

    A print_r( $new_array); yields:

    Array
    (
        [0] => Array
            (
                [2013-01-02] => 27.62
                [2013-01-03] => 27.25
                [2013-01-04] => 26.74
            )
    
        [1] => Array
            (
                [2013-01-03] => 27.25
                [2013-01-04] => 26.74
                [2013-01-07] => 26.69
            )
    
        [2] => Array
            (
                [2013-01-04] => 26.74
                [2013-01-07] => 26.69
                [2013-01-08] => 26.55
            )
    
        [3] => Array
            (
                [2013-01-07] => 26.69
                [2013-01-08] => 26.55
                [2013-01-09] => 26.7
            )
    
        [4] => Array
            (
                [2013-01-08] => 26.55
                [2013-01-09] => 26.7
                [2013-01-10] => 26.46
            )
    
        [5] => Array
            (
                [2013-01-09] => 26.7
                [2013-01-10] => 26.46
                [2013-01-11] => 26.83
            )
    
    )
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥17 pro*C预编译“闪回查询”报错SCN不能识别
  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向