私は日付の配列を持っています。すなわち、日付を含む配列から別の月を得る方法
array(
0 => '2016-08-01',
1 => '2016-07-15',
2 => '2016-07-01'
);
別々の月を配列で取得する必要があります。すなわち、
array(
0 => 7,
1 => 8
);
日付配列とは別の月が表示されるようにforeachを実行する必要があります:June - Juy - August
私は日付の配列を持っています。すなわち、日付を含む配列から別の月を得る方法
array(
0 => '2016-08-01',
1 => '2016-07-15',
2 => '2016-07-01'
);
別々の月を配列で取得する必要があります。すなわち、
array(
0 => 7,
1 => 8
);
日付配列とは別の月が表示されるようにforeachを実行する必要があります:June - Juy - August
この結果を得るには、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を(関数($値){リターン(新日時($値)) - >フォーマット( 'N'); }、$ data)); –