Php 如何合并阵列创建带有子阵列的阵列?

Php 如何合并阵列创建带有子阵列的阵列?,php,merge,arrays,Php,Merge,Arrays,我有以下阵列: 最小值: [2006] => 117 [2007] => 117 [2008] => 117 [2009] => 117 [2010] => 117 [2011] => 117 [2012] => 118 [2013] => 132 平均值: [2006] => 170 [2007] => 174 ... [2013] => 166 最大值: [2006] => 291 [2007] => 630

我有以下阵列:

最小值:

[2006] => 117
[2007] => 117
[2008] => 117
[2009] => 117
[2010] => 117
[2011] => 117
[2012] => 118
[2013] => 132
平均值:

[2006] => 170
[2007] => 174
...
[2013] => 166
最大值:

[2006] => 291
[2007] => 630
...
[2013] => 246
如何合并它们,使我有以下带有子阵列的阵列:

[2006] => array (117, 170, 291),
[2007] => array (117, 174, 630),
...
[2013] => array (132, 166, 246)
一个没有子阵列的解决方案也很有价值。这样做也能解决问题:

[2006] => [117, 170, 291]
[2007] => [117, 174, 630]
...
[2013] => [132, 166, 246]

非常感谢

对数组名称进行了假设:

$new=array();

foreach($min as $k=>$v){
$new[$k]=array($v,$average[$k],$max[$k]);
}
我真的不明白“没有子数组的解决方案”是什么意思-您想要字符串还是

编辑字符串创建

$new='';

foreach($min as $k=>$v){
$new.='['.$v.','.$average[$k].','.$max[$k].'],';
}

$new=rtrim($new,',');//remove last comma

非常简单,只需编写一个foreach循环,在其中一个数组上循环,我在这里使用$mins数组

然后从其他每个数组中获取等效数据,并使用该键作为新数组的键将它们全部添加到新数组中

$mins = array(2006 => 117, 2007 => 117, 2008 => 117,
              2009 => 117, 2010 => 117, 2011 => 117,
              2012 => 118, 2013 => 132);

$avgs = array(2006 => 170, 2007 => 174, 2008 => 169,
              2009 => 179, 2010 => 180, 2011 => 181,
              2012 => 182, 2013 => 183);

$maxs = array(2006 => 217, 2007 => 233, 2008 => 322,
              2009 => 215, 2010 => 216, 2011 => 217,
              2012 => 231, 2013 => 232);

$newArray = array();

foreach( $mins as $year => $min ) {
    $newArray[$year] = array( $min, $avgs[$year], $maxs[$year] );
}

print_r( $newArray );
输出为:-

Array
(
    [2006] => Array
        (
            [0] => 117
            [1] => 170
            [2] => 217
        )

    [2007] => Array
        (
            [0] => 117
            [1] => 174
            [2] => 233
        )

    [2008] => Array
        (
            [0] => 117
            [1] => 169
            [2] => 322
        )

    [2009] => Array
        (
            [0] => 117
            [1] => 179
            [2] => 215
        )

    [2010] => Array
        (
            [0] => 117
            [1] => 180
            [2] => 216
        )

    [2011] => Array
        (
            [0] => 117
            [1] => 181
            [2] => 217
        )

    [2012] => Array
        (
            [0] => 118
            [1] => 182
            [2] => 231
        )

    [2013] => Array
        (
            [0] => 132
            [1] => 183
            [2] => 232
        )

)
使用新的数组语法

$mins = [2006 => 117, 2007 => 117, 2008 => 117,
              2009 => 117, 2010 => 117, 2011 => 117,
              2012 => 118, 2013 => 132];

$avgs = [2006 => 170, 2007 => 174, 2008 => 169,
              2009 => 179, 2010 => 180, 2011 => 181,
              2012 => 182, 2013 => 183];

$maxs = [2006 => 217, 2007 => 233, 2008 => 322,
              2009 => 215, 2010 => 216, 2011 => 217,
              2012 => 231, 2013 => 232];

$newArray = [];

foreach( $mins as $year => $min ) {
    $newArray[$year] = [ $min, $avgs[$year], $maxs[$year] ];
}

print_r( $newArray );
如果你想把结果变成一个字符串数组,就这样修改它

foreach( $mins as $year => $min ) {
    $newArray[$year] = sprintf('[%d,%d,%d]', $min, $avgs[$year], $maxs[$year]);
}

print_r( $newArray );
给出这个结果

Array
(
    [2006] => [117,170,217]
    [2007] => [117,174,233]
    [2008] => [117,169,322]
    [2009] => [117,179,215]
    [2010] => [117,180,216]
    [2011] => [117,181,217]
    [2012] => [118,182,231]
    [2013] => [132,183,232]
)

对于每个循环,使用键是的,a心里有一个字符串,因为最终我真正需要的是一个字符串,就像[401170118],[356181120],。。。这是谷歌图表:-D你有什么想法吗?非常感谢@Dagon!两种解决方案都很有效!我的错在这里;-)嘿@Dagon我们忘了在字符串中包含$key。只有我们同时插入年份,图表才会起作用。很抱歉,我以前没提过。我们需要类似于[2012401170118],[2013,356181120]的东西。你还可以帮我吗?我试过:foreach($resultMax as$k=>$v){$new.='['.$v[$k].','.$v.','.$result06[$k].','.$resultMin[$k].].';}但随后收到一个未初始化的字符串偏移量:error