Не удалось найти подобную проблему, поэтому я надеюсь, что вы, ребята, можете мне помочь.Заполнение массива нулевым пустым
Я пытаюсь создать приборную панель, где есть обзор 10 лучших позиций веб-сайта в поиске Google в течение определенного периода времени. Прямо сейчас мы получаем данные из Goolge и помещаем их в базу данных, после чего извлекаем данные из базы данных и манипулируем ими, чтобы они соответствовали диаграмме Highcharts.
Проблема в том, что не каждый сайт находится в первой десятке каждый раз, поэтому там будут отверстия в данных.
Массив должен выглядеть примерно так в конце [9,7,8,0,0,10]
для диапазона дат, подобного этому ["2016-05-15", "2016-05-16", "2016-05-17", "2016-05-18", "2016-05-19", "2016-05-20"]
(нуль для каждого сайта не входит в первую десятку). Но результат, который мы получаем прямо сейчас, похож на этот [9,7,8,10]
(поэтому он подталкивает все значения к фронту массива). Я пытался вычислить количество дней между каждый раз сайт находится в топ-10, но это дает мне массив как [9,9,9,9,8,9]
Это код, который я до сих пор
$result = $conn->query($sql);
while($row = $result->fetch_assoc()) {
$matchFound = false;
for($i = 0; $i < count($urlData); $i++) {
if($urlData[$i]["keyword"] == $row["keyword"]){
addDates($row["date"]);
if(!isset($prevDate)){
$urlData[$i]["urlpos"][$row["url"]][] = $row["position"];
$prevDate = $row["date"];
}else {
if(calcDateDiff($prevDate, $row["date"]) > 1){
for($i = 0; $i < calcDateDiff($prevDate, $row["date"]); $i++){
$urlData[$i]["urlpos"][$row["url"]][] = 0;
}
$urlData[$i]["urlpos"][$row["url"]][] = $row["position"];
$prevDate = $row["date"];
}else {
$urlData[$i]["urlpos"][$row["url"]][] = $row["position"];
$prevDate = $row["date"];
}
}
$matchFound = true;
break;
}
}
if (!$matchFound) {
$urlData[] = array(
"keyword" => $row["keyword"],
"urlpos" => array(
$row["url"] => array($row["position"])
)
);
}
}
function calcDateDiff($firstAppearence, $seconAppearance){
$first = strtotime($firstAppearence);
$second = strtotime($seconAppearance);
$days = floor(($second - $first)/(60*60*24));
return $days;
}
Любая помощь будет оценена ,
Может ли запуск calcDateDiff корректно срабатывать, вы отлаживали форматы дат? – Cristo