Y-m-d我有一個帶有-formatted 鍵的陣列。我想過濾陣列,以便保留的唯一行將與一年中的最后一天相關聯。
樣本陣列:
array:4 [▼
"2022-10-30" => array:9 [?]
"2022-10-31" => array:6 [?]
"2022-11-07" => array:4 [?]
"2022-11-09" => array:3 [?]
]
期望的結果:
array:2 [▼
"2022-10-31" => array:6 [?]
"2022-11-09" => array:3 [?]
]
重要提示:此陣列中可能還有其他月份,并不是每個月的每一天都在輸入陣列中表示。
我開始寫一些代碼,但我不確定如何繼續。
public function monthly_average()
{
global $datas,$dates;
$args= $this->period_monthAverage($datas,$dates);
dump($args);
//dump($datas);
dump($dates);
dump($dates[0]>$dates[1]);
$fdate=array();
for ($i = 0; $i <= sizeof($dates); $i ){
if(date('m',strtotime($date[i]))==date('m',strtotime($date[i 1]))){
}
//dump((date('m',strtotime($date)))); 10- 11
}
}
uj5u.com熱心網友回復:
維護年月鍵值的查找陣列,其中值是日歷上該月中最近出現的日期。
當該月的某個日期到來時,替換結果中的元素并更新您的查找陣列。
代碼:(演示)
$result = [];
foreach ($array as $key => $value) {
$ym = substr($key, 0, 7);
if (!isset($lookup[$ym]) || $lookup[$ym] < $key) {
$result[$key] = $value;
if (isset($lookup[$ym])) {
unset($result[$lookup[$ym]]);
}
$lookup[$ym] = $key;
}
}
var_export($result);
或者用更少的函式呼叫撰寫:(Demo)
$result = [];
foreach ($array as $key => $value) {
$ym = substr($key, 0, 7);
if (!isset($lookup[$ym])) {
$result[$key] = $value;
$lookup[$ym] = $key;
} elseif ($lookup[$ym] < $key) {
unset($result[$lookup[$ym]]);
$result[$key] = $value;
$lookup[$ym] = $key;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/532275.html
上一篇:我怎么知道這兩個日期在開始日期和結束日期的范圍內?(PostgreSQL)
下一篇:時間序列-用弱提前資料替換缺失值
