PHP : 从另一个数组中获取相同键的值
PHP : get values of same key from another array
我有两个不同的数组
数组 1:
$result = array(
"2018-08-30" => 8
"2018-08-31" => 2
"2018-09-04" => 4
"2018-09-20" => 1
"2018-09-24" => 1
"2018-09-27" => 2
);
和
数组 2
$dateRanges = array(
"2018-08-28" => 0
"2018-08-29" => 1
"2018-08-30" => 2
"2018-08-31" => 3
"2018-09-01" => 4
"2018-09-02" => 5
"2018-09-03" => 6
"2018-09-04" => 7
"2018-09-05" => 8
"2018-09-06" => 9
"2018-09-07" => 10
"2018-09-08" => 11
"2018-09-09" => 12
"2018-09-10" => 13
"2018-09-11" => 14
"2018-09-12" => 15
"2018-09-13" => 16
"2018-09-14" => 17
"2018-09-15" => 18
"2018-09-16" => 19
"2018-09-17" => 20
"2018-09-18" => 21
"2018-09-19" => 22
"2018-09-20" => 23
"2018-09-21" => 24
"2018-09-22" => 25
"2018-09-23" => 26
"2018-09-24" => 27
"2018-09-25" => 28
"2018-09-26" => 29
"2018-09-27" => 30
);
我对第二个数组 ($dateRanges) 使用了 array_flip,所以请不要对序列中给出的值感到困惑。
我想将日期的值从Array1赋给Array2;
预期结果:
$dateRanges = array(
"2018-08-28" => 0
"2018-08-29" => 0
"2018-08-30" => 8
"2018-08-31" => 2
"2018-09-01" => 0
"2018-09-02" => 0
"2018-09-03" => 0
"2018-09-04" => 4
"2018-09-05" => 0
"2018-09-06" => 0
"2018-09-07" => 0
"2018-09-08" => 0
"2018-09-09" => 0
"2018-09-10" => 0
"2018-09-11" => 0
"2018-09-12" => 0
"2018-09-13" => 0
"2018-09-14" => 0
"2018-09-15" => 0
"2018-09-16" => 0
"2018-09-17" => 0
"2018-09-18" => 0
"2018-09-19" => 0
"2018-09-20" => 1
"2018-09-21" => 0
"2018-09-22" => 0
"2018-09-23" => 0
"2018-09-24" => 1
"2018-09-25" => 0
"2018-09-26" => 0
"2018-09-27" => 2
);
我已经使用 foreach 循环完成了此操作,我正在检查我的日期是否存在于 $dateRanges
数组中,但我想知道是否有任何快捷方式,例如使用 array_column
或 array_combine
或 array_walk
函数。
谢谢
以下应该有效,将值从 $array1
复制到 $array2
或设置 0
如果不存在值。
我尚未测试此代码,因此可能需要进行一些调整。
$array1 = array(/*...*/);
$array2 = array(/*...*/);
array_walk($array2, function (&$v, $k) use ($array1) {
if (isset($array1[$k]))
$v = $array1[$k];
else
$v = 0;
});
您可以使用 array_map()
and array_merge()
的组合
$newArr = array_merge(array_map(function($v){return 0;}, $dateRanges), $result);
检查结果 demo
我有两个不同的数组
数组 1:
$result = array(
"2018-08-30" => 8
"2018-08-31" => 2
"2018-09-04" => 4
"2018-09-20" => 1
"2018-09-24" => 1
"2018-09-27" => 2
);
和
数组 2
$dateRanges = array(
"2018-08-28" => 0
"2018-08-29" => 1
"2018-08-30" => 2
"2018-08-31" => 3
"2018-09-01" => 4
"2018-09-02" => 5
"2018-09-03" => 6
"2018-09-04" => 7
"2018-09-05" => 8
"2018-09-06" => 9
"2018-09-07" => 10
"2018-09-08" => 11
"2018-09-09" => 12
"2018-09-10" => 13
"2018-09-11" => 14
"2018-09-12" => 15
"2018-09-13" => 16
"2018-09-14" => 17
"2018-09-15" => 18
"2018-09-16" => 19
"2018-09-17" => 20
"2018-09-18" => 21
"2018-09-19" => 22
"2018-09-20" => 23
"2018-09-21" => 24
"2018-09-22" => 25
"2018-09-23" => 26
"2018-09-24" => 27
"2018-09-25" => 28
"2018-09-26" => 29
"2018-09-27" => 30
);
我对第二个数组 ($dateRanges) 使用了 array_flip,所以请不要对序列中给出的值感到困惑。
我想将日期的值从Array1赋给Array2;
预期结果:
$dateRanges = array(
"2018-08-28" => 0
"2018-08-29" => 0
"2018-08-30" => 8
"2018-08-31" => 2
"2018-09-01" => 0
"2018-09-02" => 0
"2018-09-03" => 0
"2018-09-04" => 4
"2018-09-05" => 0
"2018-09-06" => 0
"2018-09-07" => 0
"2018-09-08" => 0
"2018-09-09" => 0
"2018-09-10" => 0
"2018-09-11" => 0
"2018-09-12" => 0
"2018-09-13" => 0
"2018-09-14" => 0
"2018-09-15" => 0
"2018-09-16" => 0
"2018-09-17" => 0
"2018-09-18" => 0
"2018-09-19" => 0
"2018-09-20" => 1
"2018-09-21" => 0
"2018-09-22" => 0
"2018-09-23" => 0
"2018-09-24" => 1
"2018-09-25" => 0
"2018-09-26" => 0
"2018-09-27" => 2
);
我已经使用 foreach 循环完成了此操作,我正在检查我的日期是否存在于 $dateRanges
数组中,但我想知道是否有任何快捷方式,例如使用 array_column
或 array_combine
或 array_walk
函数。
谢谢
以下应该有效,将值从 $array1
复制到 $array2
或设置 0
如果不存在值。
我尚未测试此代码,因此可能需要进行一些调整。
$array1 = array(/*...*/);
$array2 = array(/*...*/);
array_walk($array2, function (&$v, $k) use ($array1) {
if (isset($array1[$k]))
$v = $array1[$k];
else
$v = 0;
});
您可以使用 array_map()
and array_merge()
$newArr = array_merge(array_map(function($v){return 0;}, $dateRanges), $result);
检查结果 demo