이 배열이 있습니다.
Array
(
[0] => Array
(
[c] => Array
(
[0] => Array
(
[v] => 28
)
[1] => Array
(
[v] => 1422.00
)
)
)
[1] => Array
(
[c] => Array
(
[0] => Array
(
[v] => 29
)
[1] => Array
(
[v] => 480.00
)
)
)
[2] => Array
(
[c] => Array
(
[0] => Array
(
[v] => 31
)
[1] => Array
(
[v] => 1472.00
)
)
)
[3] => Array
(
[c] => Array
(
[0] => Array
(
[v] => 32
)
[1] => Array
(
[v] => 910.00
)
)
)
[4] => Array
(
[c] => Array
(
[0] => Array
(
[v] => 33
)
[1] => Array
(
[v] => 740.00
)
)
)
[5] => Array
(
[c] => Array
(
[0] => Array
(
[v] => 34
)
[1] => Array
(
[v] => 380.00
)
)
)
[6] => Array
(
[c] => Array
(
[0] => Array
(
[v] => 35
)
[1] => Array
(
[v] => 640.00
)
)
)
[7] => Array
(
[c] => Array
(
[0] => Array
(
[v] => 36
)
[1] => Array
(
[v] => 340.00
)
)
)
[8] => Array
(
[c] => Array
(
[0] => Array
(
[v] => 37
)
[1] => Array
(
[v] => 1490.00
)
)
)
[9] => Array
(
[c] => Array
(
[0] => Array
(
[v] => 38
)
[1] => Array
(
[v] => 710.00
)
)
)
[10] => Array
(
[c] => Array
(
[0] => Array
(
[v] => 39
)
[1] => Array
(
[v] => 810.00
)
)
)
[11] => Array
(
[c] => Array
(
[0] => Array
(
[v] => 40
)
[1] => Array
(
[v] => 3152.00
)
)
)
)
참고로 V는 28 (선택한 연도의 주 수)부터 시작하고 30주는 누락되었습니다.
물론 데이터베이스의 다른 쿼리는 다른 결과를 반환 할 수 있습니다 (또는 "갭"없음).
그 간격을 어떻게 "채울"수 있습니까? (흥미 롭다면 1 년의 최대 주 수, 52 주 또는 53 주도 알고 있습니다.)
대단히 감사합니다.
편집하다
"30"이 배열에 삽입되고 값이 "0.00"(다음 참조) 인 다음과 같은 결과로 배열이됩니다.
Array
(
[0] => Array
(
[c] => Array
(
[0] => Array
(
[v] => 28
)
[1] => Array
(
[v] => 1422.00
)
)
)
[1] => Array
(
[c] => Array
(
[0] => Array
(
[v] => 29
)
[1] => Array
(
[v] => 480.00
)
)
)
[2] => Array
(
[c] => Array
(
[0] => Array
(
[v] => 30
)
[1] => Array
(
[v] => 0.00
)
)
)
다음은 올바른 입력 배열 형식을 가정하는 솔루션입니다.
$org = array(
["c"=>[["v"=>28],["v"=>1422.00]]],
["c"=>[["v"=>29],["v"=>480.00]]],
["c"=>[["v"=>31],["v"=>1234.00]]],
["c"=>[["v"=>35],["v"=>432.00]]]
// etc
);
$fixed = fixMe($org);
// I am expecting an array structured as in your example, so I am too lazy to check for errors.
function fixMe($arr){
$foundWeekNums = array();
foreach ($arr as $ind => $arr_1){
$foundWeekNums[$arr_1["c"][0]["v"]] = $arr_1["c"][1]["v"];
}
// $keys are found weeknums
$keys = array_keys($foundWeekNums);
$formWeekNum = min($keys);
$toWeekNum = max($keys);
$newArr = array();
for ($week = $formWeekNum; $week <= $toWeekNum; $week++){
if (in_array($week, $keys)){
$val = $foundWeekNums[$week];
} else {
$val = 0;
}
$newArr[] = ["c" => [["v" => $week],["v" => $val]]];
}
return $newArr;
}
echo "<pre>";
print_r($org);
echo "</pre>";
echo "<hr><pre>";
print_r($fixed);
echo "</pre>";
추신 : 52 개 또는 53 개까지 채우려면 여기에 숫자를 입력하면됩니다.
$toWeekNum = max($keys);
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다