Есть 2 массива.
Первый - показы по датам
[0] => Array
(
[date] => 20170224
[total_views] => 41
)
[1] => Array
(
[date] => 20170225
[total_views] => 7
)
[2] => Array
(
[date] => 20170226
[total_views] => 750
)
[3] => Array
(
[date] => 20170227
[total_views] => 50
)
Второй - клики по датам
[0] => Array
(
[date] => 20170224
[total_clicks] => 418
)
[1] => Array
(
[date] => 20170225
[total_clicks] => 72
)
[2] => Array
(
[date] => 20170226
[total_clicks] => 50
)
Как видите некоторые даты в 2 массивах не совпадают. Да и сами массивы могут отличатся количеством элементов. Нужно обьеденить эти 2 массива в один. А там где данных нет поставить 0.
Должен получиться такой массив.
[0] => Array
(
[date] => 20170224
[total_views] => 41
[total_clicks] => 418
)
[1] => Array
(
[date] => 20170225
[total_views] => 7
[total_clicks] => 72
)
[2] => Array
(
[date] => 20170226
[total_views] => 750
[total_clicks] => 50
)
[3] => Array
(
[date] => 20170227
[total_views] => 50
[total_clicks] => 0
)
Как видите за 20170227 кликов нет - стоит 0. Но может быть и на оборот, клики есть а показов нет.
Постройте для начала индекс, по датам:
$res = [];
foreach ($arr1 as $row) {
$row['total_clicks'] = 0;
$res[$row['date']] = $row;
}
Потом добавьте клики из второго массива:
foreach($arr2 as $row) {
if (isset($res[$row['date']])) {
$res[$row['date']]['total_clicks'] = $row['total_clicks'];
} else {
$row['total_views'] = 0;
$res[$row['date']] = $row;
}
}
Если не нужны даты в ключах - сбросьте:
$res = array_values($res);
Писал с ходу, надеюсь, не ошибся
$array3 = array();
$i=0;
foreach($array1 as $v1){
$array3[$i]['date'] = $v['date'];
$array3[$i]['total_views'] = $v['total_views'];
$array3[$i]['total_clicks'] = 0;
$i++;
}
foreach($array2 as $v2){
$f = false;
foreach($array3 as $v3){
if($v3['date'] == $v2['date']) {
$v3['total_clicks']=$v2['total_clicks'];
$f = true;
}
}
if(!$f) $array3[]=array('date'=>$v2['date'],'total_clicks'=>$v2['total_clicks'],'total_views'=>0);
}
$arrayFix = array();
for($i=0; $i<count($arrayFirst); $i++){
$arrayFix[] = array(
"date" => $arrayFirst[$i]["date"],
"total_views" => $arrayFirst[$i]["total_views"],
"total_clicks" => "0"
);
}
for($i=0; $i<count($arrayFix); $i++){
$date_view = $arrayFix[$i]["date"];
for($j=0; $j<count($arrayFix); $j++){
if($date_view==$arraySecont[$j]["date"]){
$arrayFix[$j]["total_clicks"] = $arraySecont[$j]["total_clicks"];
}
}
}
print_r($arrayFix);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
PHP не знаю, к сожалениюПытаюсь прикрутить к сайту готовую форму, код которой нашла в сети
нужно вывести все даты начиная с текущей, и не больше 30 дней
Всем привет, нужна помощь в решении проблемы со скриптом для ВК: скрипт берет посты с одной группы и отправляет в другуюПроблема заключается...