从其他2创建一个数组



我有以下数组:

Array
(
[aFlashParties] => Array
    (
        [2015-07-07] => 20
        [2015-07-08] => 48
        [2015-07-09] => 42
        [2015-07-10] => 94
        [2015-07-11] => 0
        [2015-07-12] => 0
        [2015-07-13] => 6
        [2015-07-14] => 0
    ),
[aRapidesParties] => Array
    (
        [2015-07-07] => 62
        [2015-07-08] => 6
        [2015-07-09] => 3
        [2015-07-10] => 17
        [2015-07-11] => 0
        [2015-07-12] => 0
        [2015-07-13] => 241
        [2015-07-14] => 0
    )
)

我想把它变成像这样的数组:

Array
(
[0] => Array
    (
        [date]   => 2015-07-07
        [flash]  => 20
        [rapide] => 62
        [total]  => 82
    ),
[1] => Array
    (
        [date]   => 2015-07-08
        [flash]  => 48
        [rapide] => 6
        [total]  => 54
    ),
    .....
)

因此,我们的想法是创建一个数组,其中包含日期,flash(来自[afflashparties]的数字),rapid -来自[aRapidesParties]的数字)和total (flash和rapid的总和)。你能帮我一下吗?

你只需要解析你的数组

$ret = [];
$keys = array_keys($a['aFlashParties']);
foreach ($keys as $key)
{
    $ret[] = [
        'date' => $key,
        'flash' => $a['aFlashParties'][$key],
        'rapide' => $a['aRapidesParties'][$key],
        'total' => $a['aFlashParties'][$key] + $a['aRapidesParties'][$key]
    ];
}

如果不是所有数组中都有日期,则可能需要检查某些键是否存在

使用array_map()

考虑用输入数组的名字来改变$array的实例,

$required = array_map(function($v1, $v2, $keys){
            return array('date'=>$keys, 'flash'=>$v1, 'rapide'=>$v2, 'total'=>$v1+$v2);
        }, $array['aFlashParties'], $array['aRapidesParties'], array_keys($array['aFlashParties']));

最新更新