我找不到類似的問題,所以我希望你們能幫助我。用空值填充數組爲空
我試圖建立一個儀表板,其中有一段時間的谷歌搜索前10位網站位置的概述。現在我們從Goolge獲取數據並將其放入數據庫,然後從數據庫中提取數據並對其進行處理,使其適合Highcharts圖表。
問題是,並非每個站點每次都排在前10位,所以數據中會出現漏洞。
一個數組應該看起來像[9,7,8,0,0,10]
這樣的日期範圍,如["2016-05-15", "2016-05-16", "2016-05-17", "2016-05-18", "2016-05-19", "2016-05-20"]
(每次站點不在前10位時爲零)。但是我們現在得到的結果是這樣的[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;
}
任何幫助,將不勝感激代碼。
可能for calcDateDiff不能正確觸發,你有調試的日期格式? – Cristo