PHP-增量添加数组值


PHP - Incrementally add array value

基本上我从一个查询中得到了这个:

Array
(
[0] => Array
    (
        [period] => 2014-03
        [val] => 2.19
        [type] => TypeX
    ),
[1] => Array
    (
        [period] => 2014-03
        [val] => 2.02
        [type] => TypeY
    )
)

使用foreach循环来填充我们将调用DATA的另一个数组,我希望得到以下内容:

Array
(
[TypeX] => Array
    (
        [2014-03] => 2.19
    )
[TypeY] => Array
    (
        [2014-03] => 2.02
    )
 )

整个过程是循环的,因为我的查询每次都需要在不同的时间段内运行。目前的例子是,第二个循环将在2014-04年运行。我的问题是,当我第二次到达我的数据阵列时,我想要这个:

Array
(
[TypeX] => Array
    (
        [2014-03] => 2.19
        [2014-04] => 1.10
    )
[TypeY] => Array
    (
        [2014-03] => 2.02
        [2014-04] => 4.74
    )
)

我的代码大致如下:

$data = array();
foreach($graph_period as $period){
$rows = Queryfunction($period,$WHERE,$byType);
        foreach($rows as $row){
            $data[$row['type']] = array($row['period']=>$row['val']);
        }
}

因为第一级的键(TypeX,TypeY)是相同的,所以valei被覆盖。如何追加数组而不是覆盖?

foreach($rows as $row){
    $data[$row['type']][$row['period']] = $row['val']);
}

您只需要更改一点点。在您设置值的foreach内部:

if( !isset($date[$row['type']]) ) {
  $data[$row['type']] = array();
}
$data[$row['type']][$row['period']] = $row['val'];

因此,只有在数组不存在的情况下才能创建该数组。