PHP是提取月份的好方法';字符串数组中的S3首字母

PHP是提取月份的好方法';字符串数组中的S3首字母,php,arrays,datetime,Php,Arrays,Datetime,我有 我想知道一种有效的方法来确定数组值是否包含一个月的前3个字母。所以在这个数组中有1月、3月、7月18日、11月18日 到目前为止,我是这样做的,但想知道是否有更有效的方法来解决这个问题 $array = array( 'AUS200JAN', 'GOLD300MAR', 'AUS200_h18', 'GOLD300_g19', 'EURUSDJUL18', 'AUSEURNOV18', ); 是的,比我的好。 //Creating an Array of lett

我有

我想知道一种有效的方法来确定数组值是否包含一个月的前3个字母。所以在这个数组中有
1月、3月、7月18日、11月18日

到目前为止,我是这样做的,但想知道是否有更有效的方法来解决这个问题

$array = array(
  'AUS200JAN',
  'GOLD300MAR',
  'AUS200_h18',
  'GOLD300_g19',
  'EURUSDJUL18',
  'AUSEURNOV18',
);

是的,比我的好。
//Creating an Array of letters for months
$montharray = array(
   'JAN','FEB','MAR','APR',''MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC'
);

foreach($montharray as $month) {
    foreach($array as $val) {
       if(strpos($val,$month) !== FALSE) {
           var_dump('has month');
       } else {
           var_dump('Does not contain month');
       }
    }
}
<?php

$array = array(
    'AUS200JAN',
    'GOLD300MAR',
    'AUS200_h18',
    'GOLD300_g19',
    'EURUSDJUL18',
    'AUSEURNOV18',
);

$months = array();
for ($i = 0; $i < 12; $i++) {
    $timestamp = mktime(0, 0, 0, date('f') - $i, 1);
    $months[date('n', $timestamp)] = date('M', $timestamp);

}

echo '<pre>';
print_r($months);


foreach($months as $row){
    if(preg_grep( "/$row/i" , $array )){
        echo 'found';
        echo '</br>';
    }
    else{
        echo 'not found';
        echo '</br>';
    }
}