从一个日期数组中填充一个关联数组,而另一个阵列具有并非所有日期的值

问题描述 投票:0回答:3

$dateRange = array('2010-01-01', '2010-01-02', '2010-01-03', ...); $data = array('2010-01-01' => 5, '2010-01-03' => 7); foreach ($dateRange as $date) { $values[$date] = $data[$date]; }

$values

导致:

array (
    '2010-01-01' => 5
    '2010-01-02' => null
    '2010-01-03' => 7
    ...
)

看起来相当有效,但是我想知道是否有一个简单的PHP函数可以处理此操作。
    

$values = array_merge(array_fill_keys($dateRange, null), $data);
php arrays mapping associative-array merging-data
3个回答
9
投票
实际上只能通过测试找到效率
,但是我想说的是更简洁,易于理解,并且不存在错误的键,而不是thrist。 :)

$data

,但它会产生

array_merge

1
投票
1 => 2010-01-02

Http://us.php.net/manual/enual/en/ref.array.php
上也有大量数组函数的主机
[
eDit
]:由于链接而离开这个答案,但其他答案确切地完成了您想要的。
    

要在单个通过中填充所需的关联数组,当日期中没有相关值2010-01-02 => null时,您可以使用

array_reduce()

和后备为null值。由于此关联数组没有数字键,因此可以使用联合操作员将新元素添加到结果数组中。 demo


0
投票
$data

输出:
var_export(
    array_reduce(
        $dateRange,
        fn($result, $date) => $result + [$date => $data[$date] ?? null],
        []
    )
);
使用经典循环也没有什么不专业的,只需确保将其隔离以避免警告即可。 demo
array ( '2010-01-01' => 5, '2010-01-02' => NULL, '2010-01-03' => 7, )

	

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.