PHP在多维数组中添加模拟数据

PHP在多维数组中添加模拟数据,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有一个多维数组和一些数据 Array ID Date Quantity 66998 [0] [2011-05-11] [50] [1] [2011-05-15] [50] [2] [2011-05-15] [50] 81158 [0] [2011-05-11] [25] [1] [2011-05-12] [60] [2] [2011-05-16] [60]

我有一个多维数组和一些数据

    Array  ID      Date     Quantity
    66998  [0] [2011-05-11] [50]
           [1] [2011-05-15] [50]
           [2] [2011-05-15] [50]
    81158  [0] [2011-05-11] [25]
           [1] [2011-05-12] [60]
           [2] [2011-05-16] [60]
           [3] [2011-05-18] [60]
我想在同一周内把所有订单的数量加起来。我可以用以下公式计算周数:

            $WeekNumber = date("W", $UnixTimestamp);
因此,最终的数组应该如下所示:

               Week Quantity
    66998  [0] [19] [150]
    81158  [0] [19] [85]
           [1] [20] [120]    

数组是从MS SQL数据库生成的。

您可以使用
array\u reduce($array,'function\u name')
一步一步地生成结果数组

function calc_weeks($result, $row)
{
    . . .
    $WeekNumber = date("W", $UnixTimestamp);
    $result[$weekNumber] += $row['quantity'];
    return $result;
}
array_reduce($array, 'calc_weeks', array());
或者,您可以使用SQL计算周数,并以这种方式对订单求和。在MySQL中,函数名为
WEEK()
。对于MS SQL,有一个.

因此,根据我的理论操作:(参见我在OP问题中的评论)


快乐编码

您从何处获取此数据?是否有助于您在SQL中执行此操作?(假设MySQL)但是DATEPART(ISO_WEEK,foo)可能会起作用,看,我看到了一个三维数组,你是对的,我应该换个说法。:)看起来似乎有道理,我会试试看。谢谢。我不知道这是否比前面的答案好,但那张照片很有趣。谢谢你让我振作起来;D
<?php

    $array = array(66998 => array(array('ID' => 0,
                            'Date' => '2011-05-11',
                            'Quantity' => 50),
                            array('ID' => 1,
                            'Date' => '2011-05-15',
                            'Quantity' => 50),
                            array('ID' => 2,
                            'Date' => '2011-05-15',
                            'Quantity' => 50)
                            ),
                    81158   => array(array('ID' => 0,
                            'Date' => '2011-05-11',
                            'Quantity' => 25),
                            array('ID' => 1,
                            'Date' => '2011-05-12',
                            'Quantity' => 60),
                            array('ID' => 2,
                            'Date' => '2011-05-16',
                            'Quantity' => 60),
                            array('ID' => 3,
                            'Date' => '2011-05-18',
                            'Quantity' => 60)
                            ));

    $newArray = array();

    foreach($array as $subKey => $subArray) {

        foreach($subArray as $idArray) {

            $week = date("W", strtotime($idArray['Date']));

            $newArray["{$subKey}"]["{$week}"] = $idArray['Quantity'] + $newArray["{$subKey}"]["{$week}"];
        }
    }

    var_dump($newArray);

?>
array(2) {
  [66998]=>
  array(1) {
    [19]=>
    int(150)
  }
  [81158]=>
  array(2) {
    [19]=>
    int(85)
    [20]=>
    int(120)
  }
}