我有一個包含日期的數組。即。如何從包含日期的數組中獲得不同的月份
array(
0 => '2016-08-01',
1 => '2016-07-15',
2 => '2016-07-01'
);
我需要在數組中獲得不同的月份。即。
array(
0 => 7,
1 => 8
);
我需要做一個foreach顯示:六月 - Juy日 - 8月從日期陣列的不同個月。 (這部分我知道如何)
我有一個包含日期的數組。即。如何從包含日期的數組中獲得不同的月份
array(
0 => '2016-08-01',
1 => '2016-07-15',
2 => '2016-07-01'
);
我需要在數組中獲得不同的月份。即。
array(
0 => 7,
1 => 8
);
我需要做一個foreach顯示:六月 - Juy日 - 8月從日期陣列的不同個月。 (這部分我知道如何)
您可以使用array_map
,DateTime
和array_unique
的組合來重新設置日期以實現該結果。
$arr = array(
0 => '2016-08-01',
1 => '2016-07-15',
2 => '2016-07-01'
);
$dates = array_unique(array_map(function($date) {
return DateTime::createFromFormat('Y-m-d', $date)->format('n');
}, $arr));
var_dump($dates);
array(2) { [0]=> string(1) "8" [1]=> string(1) "7" }
當然,一定要注意這導致像2015-08-11
和2016-08-04
都顯示爲數組中的一個值,兩個日期是非常重要的。所以目前還不完全清楚你爲什麼要這樣做,但是這將滿足你的特定要求。
這是循環中,您需要:
<?php
$arr = array('2016-08-01',
'2016-07-15',
'2016-07-01');
$months = array(); // EMPTY ARRAY FOR MONTHS.
foreach ($arr as $date) // VISIT EACH DATE IN ARRAY.
{ $mon = substr($date,5,2); // EXTRACT THE MONTH DIGITS.
if (! in_array($mon,$months)) // IF MONTH IS NOT IN ARRAY
array_push($months,$mon); // INSERT THE MONTH DIGITS.
}
var_dump($months);
?>
編輯:顯示月份名稱:
<?php
$arr = array('2016-08-01',
'2016-07-15',
'2016-07-01');
$months = array(); // EMPTY ARRAY FOR MONTHS.
foreach ($arr as $date) // VISIT EACH DATE IN ARRAY.
{ $mon = substr($date,5,2); // EXTRACT THE MONTH DIGITS.
if (! in_array($mon,$months)) // IF MONTH IS NOT IN ARRAY
{ array_push($months,$mon); // INSERT THE MONTH DIGITS.
echo date ("F",mktime(null,null,null,$mon,1)); // ◄ MONTH NAME!!!
}
}
?>
編輯#2:存儲陣列月份名稱:
<?php
$arr = array('2016-08-01',
'2016-07-15',
'2016-07-01');
$months = array(); // EMPTY ARRAY FOR MONTHS.
foreach ($arr as $date) // VISIT EACH DATE IN ARRAY.
{ $mon = date("F",mktime(null,null,null,substr($date,5,2),1)); // EXTRACT MONTH.
if (! in_array($mon,$months)) // IF MONTH IS NOT IN ARRAY
array_push($months,$mon); // INSERT MONTH NAME IN ARRAY.
}
var_dump($months);
?>
只需使用substr在每個日期數組條目中檢索字符5到7,然後將它們存儲在新數組中:
$dates = array(
0 => '2016-08-01',
1 => '2016-07-15',
2 => '2016-07-01');
$months = array();
foreach ($dates as $date) {
$months[] = (int)substr($date, 5, 2);
}
$months = array_unique($months); // Remove duplicates
sort($months);
表現也不錯 –
不清楚你問 – kikuyu1
'$結果= array_unique(array_map(函數($值){返回(新的DateTime($值)) - >格式( 'N'); },$ data));' –