我有一个数组,它生成过去7天的时间戳,我有一个2d数组,它给出过去7天内某些天的值。我想使用第一个数组来填充每个键下不存在值的天数。
hotel_data:美元Array
(
[49] => Array
(
[1365202800] => 2
)
[48] => Array
(
)
[50] => Array
(
[1364943600] => 4
[1365375600] => 5
)
)
$ d:
Array
(
[1365375600] => 0
[1365289200] => 0
[1365202800] => 0
[1365116400] => 0
[1365030000] => 0
[1364943600] => 0
[1364857200] => 0
[1364770800] => 0
[1364688000] => 0
[1364601600] => 0
)
下面是我试图用来合并两个数组的代码:
foreach($hotel_data as $key1=>$value1) {
foreach($hotel_data[$key1] as $datekey=>$ratingval) {
foreach($d as $key2=>$value2)
{
if($datekey !== $key2) {
$hotel_data[$key1][$key2] = 0;
}
}
//echo $datekey.'<br/>';
}
}
结果如下:
Array
(
[49] => Array
(
[1365202800] => 2
[1365375600] => 0
[1365289200] => 0
[1365116400] => 0
[1365030000] => 0
[1364943600] => 0
[1364857200] => 0
[1364770800] => 0
[1364688000] => 0
[1364601600] => 0
)
[48] => Array
(
)
[50] => Array
(
[1364943600] => 0
[1365375600] => 0
[1365289200] => 0
[1365202800] => 0
[1365116400] => 0
[1365030000] => 0
[1364857200] => 0
[1364770800] => 0
[1364688000] => 0
[1364601600] => 0
)
)
但是正如你所看到的,由于某种原因[49]的值仍然存在,但是[50]中的两个值被替换为0。
原因是您有两个值设置为50。当$datekey是第一个值的键时,将所有其他值设置为0,包括第二个值。当$datekey是第二个值的键时,将所有其他值设置为0,包括第一个值。
我认为它应该工作,如果你检查$hotel_data[$key1][$key2]设置之前:
if (!isset($hotel_data[$key1][$key2]) { $hotel_data[$key1][$key2]=0;}
使用它你可以删除if