我有两个不同的数组
$dates = [
0 => "2019-01-17",
1 => "2019-01-16",
2 => "2019-01-15",
3 => "2019-01-14",
4 => "2019-01-13",
5 => "2019-01-12",
6 => "2019-01-11",
7 => "2019-01-10"
]
以下是动态的,可以有所不同,但让我们看一个示例
$Fresh_Record = [
"date" => array:2 [
0 => "2019-01-10"
1 => "2019-01-14"
]
"counter" => array:2 [
0 => 1000.0
1 => 500.0
]
]
如您所见,上面的数组包含日期和counter
。如您所知,计数器1000.0
用于2019-01-10
,而500
用于2019-01-14
。
这些只是可用的记录,但我需要最近7天的记录。因此,如果任何日期没有可用记录,我想添加0
。
我正在尝试并尝试了很多,但是仍然未能实现。
首次尝试
$ARR_1 = array();
foreach($result as $AA){
$data['counter'][] = 0;
}
$MERGE = array_merge($data['counter'],$yAxis_ARR);
$MAIN = [
'date' => $d,
'counter' => $MERGE
];
其他尝试
$index = 0;
foreach($d as $single){
if(!in_array($single,$Fresh_Record['date'])){
if(count($Fresh_Record['date']) >= $index){
$map_array['date'] = $Fresh_Record['date'][$index];
$map_array['counter'] = 0;
}
}
$index++;
}
帮助
我真的需要指导来解决它。请指导我。非常感谢。
我想像下面这样
$map_array = [
"date" => [
0 => "2019-01-17",
1 => "2019-01-16",
2 => "2019-01-15",
3 => "2019-01-14",
4 => "2019-01-13",
5 => "2019-01-12",
6 => "2019-01-11""
]
"counter" => [
0 => 1000.0,
1 => 500.0,
2 => 0,
3 => 0,
4 => 0,
5 => 0,
6 => 0
]
]
答案 0 :(得分:2)
您可以使用array_search检查日期是否存在索引,并将相同的索引用于Fresh_Record中的计数器:
<?php
$dates = [
0 => "2019-01-17",
1 => "2019-01-16",
2 => "2019-01-15",
3 => "2019-01-14",
4 => "2019-01-13",
5 => "2019-01-12",
6 => "2019-01-11",
7 => "2019-01-10"
];
$Fresh_Record = [
"date" => [
0 => "2019-01-10",
1 => "2019-01-14"
],
"counter" => [
0 => 1000.0,
1 => 500.0
]
];
foreach($dates as $date){
$map_array['date'][] = $date;
$index = array_search($date, $Fresh_Record['date']);
if($index !== false){
$map_array['counter'][] = $Fresh_Record['counter'][$index];
} else {
$map_array['counter'][] = 0;
}
}
print_r($map_array);
将输出:
Array
(
[date] => Array
(
[0] => 2019-01-17
[1] => 2019-01-16
[2] => 2019-01-15
[3] => 2019-01-14
[4] => 2019-01-13
[5] => 2019-01-12
[6] => 2019-01-11
[7] => 2019-01-10
)
[counter] => Array
(
[0] => 0
[1] => 0
[2] => 0
[3] => 500
[4] => 0
[5] => 0
[6] => 0
[7] => 1000
)
)
答案 1 :(得分:0)
下面的代码段应该起作用
<?php
$dates = [
0 => "2019-01-17",
1 => "2019-01-16",
2 => "2019-01-15",
3 => "2019-01-14",
4 => "2019-01-13",
5 => "2019-01-12",
6 => "2019-01-11",
7 => "2019-01-10"
];
$Fresh_Record = [
"date" => [
0 => "2019-01-10",
1 => "2019-01-14"
],
"counter" => [
0 => 1000.0,
1 => 500.0
]
];
$arrayMap = [
'date' => [],
'counter' => []
];
foreach($dates as $index => $date){
$count = 0;
$foundIndex = array_search($date, $Fresh_Record['date']);
if ($foundIndex !== false) {
$count = $Fresh_Record['counter'][$foundIndex];
}
$arrayMap['date'][$index] = $date;
$arrayMap['counter'][$index] = $count;
}
var_dump($arrayMap);