PHP - 增量添加数组值

时间:2015-03-05 16:59:51

标签: php arrays multidimensional-array

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

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运行。我的问题是当我第二次到达我的DATA阵列时,我想要这个:

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。我如何附加数组而不是覆盖?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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

$data[$row['type']][$row['period']] = $row['val'];

因此,只有在数组不存在时才创建数组。