【问题标题】:PHP good way to extract month's 3 initial letter from an array of stringsPHP从字符串数组中提取月份3个首字母的好方法
【发布时间】:2018-01-08 12:32:43
【问题描述】:

我有

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

我想知道一种有效的方法来确定数组值是否包含一个月的前 3 个字母。所以在这个数组中有JAN, MAR, JUL18, NOV18

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

//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 arrays datetime


    【解决方案1】:
    <?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>';
        }
    }
    

    你可以试试这样的。它检查每个月的数组记录(3 个字母格式)

    【讨论】:

    • 是的,比我的好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多