PHP ရီဂျူလာ ဖော်မြူလာများတွင် အိတ်ကပ် အရေအတွက် အလုံး

အောက်ပါအခြေအနေကို သုံးသပ်ကြည့်ပါ။ ကျွန်ုပ်တို့တွင် ပြောင်းလဲနိုင်သော နှစ်တစ်ခု ရှိသည်ဆိုပါစို့၊ ၎င်းကို 1990 မှ 2099 အထိ ပြောင်းလဲနိုင်သည်။ နှစ်၏ နောက်ဆုံးဂဏန်းနှစ်လုံးကို အိတ်ကပ်ထဲမှ ရယူလိုသည်ဟု ယူဆပါ။ သင့်လျော်သော ရီဂျူလာ ဖော်မြူလာကို ရေးကြမည်။

php<?php
  $reg = '#19(9\d)|20(\d\d)#';
?>

သို့သော်၊ ဤနေရာတွင် မသက်မသာ ခံစားရမှုတစ်ခု ကျွန်ုပ်တို့ကို စောင့်နေသည်။ အကြောင်းမှာ ရာစုနှစ်အဟောင်း အတွက် ဂဏန်းနှစ်လုံးသည် ပထမအိတ်ကပ်ထဲသို့ ရောက်သွားမည်၊ ဒုတိယရာစုနှစ်အတွက် ဂဏန်းများမှာ ဒုတိယအိတ်ကပ်ထဲသို့ ရောက်သွားမည်။ နမူနာများဖြင့် ကြည့်ကြပါစို့။

ပထမနမူနာ အောက်ပါအတိုင်းဖြစ်သည်။

php<?php
  $str = '1991';
  preg_match($reg, $str, $res);
  var_dump($res); // [1 => '91']
?>

ဒုတိယနမူနာ အောက်ပါအတိုင်းဖြစ်သည်။

php<?php
  $str = '2021';
  preg_match($reg, $str, $res);
  var_dump($res); // [2 => '21']
?>

ယခု ကျွန်ုပ်တို့ ရှာတွေ့သော နှစ်၏ ဂဏန်းများကို ပြောင်းလဲနိုင်သော အမည်တစ်ခုထဲသို့ ရေးထည့်လိုသည်ဆိုပါစို့။ ပြဿနာတစ်ခုကို ကျွန်ုပ်တို့ ကြုံရမည်၊ အကြောင်းမှာ အိတ်ကပ်မှ ဒေတာများကို မည်သည့်သော့ချက်ဖြင့် ထုတ်ယူရမည်ကို ကျွန်ုပ်တို့ အတိအကျ မသိပါ။

php<?php
  $year = $res[1]; // 1 သို့မဟုတ် 2 သော့ချက် လိုအပ်သည်
?>

အခြေအနေတစ်ခုဖြင့် ပြဿနာကို ဖြေရှင်းနိုင်သည်။

php<?php
  if (!empty($res[1])){
    $year = $res[1];
  } else{
    $year = $res[2];
  }
?>

သို့သော်၊ ပိုမိုလွယ်ကူသော ဖြေရှင်းနည်းတစ်ခု ရှိပါသည်။ အထူးညွှန်ကြားချက် (?| ) ကို အသုံးပြုနိုင်ပါသည်။ ၎င်းအတွင်းရှိ အိတ်ကပ်အားလုံးတွင် တစ်ခုတည်းသော နံပါတ်ရှိမည်။

ကျွန်ုပ်တို့၏ ရီဂျူလာ ဖော်မြူလာကို ပြင်ဆင်ကြပါစို့။

php<?php
  $reg = '#(?|19(9\d)|20(\d\d))#';
?>

ယခု ကျွန်ုပ်တို့၏ နှစ်သည် ဧကန်မုချ နံပါတ်တစ်ရှိသော အိတ်ကပ်ထဲတွင် ရှိမည်။

php<?php
  $year = $res[1];
?>
Задание 1

နှစ်များကို 1990 မှ 2099 အထိ ပြောင်းလဲနိုင်သည့် ရက်စွဲများပါသော စာတန်းများ ပေးထားသည်။

php<?php
  $arr = [
    '31-12-2025',
    '30-11-1995',
    '29-10-1990',
  ];
?>

ရက်စွဲတစ်ခုစီအတွက် ရက်ကို ပထမအိတ်ကပ်၊ လကို ဒုတိယအိတ်ကပ်၊ နှစ်၏ နောက်ဆုံးဂဏန်းနှစ်လုံးကို တတိယအိတ်ကပ်ထဲသို့ ထည့်ပါ။