Mfuko Wenye Majina Katika Usimbaji Fupi wa PHP

Tuseme kwa kutumia preg_match tunataka kugawanya tarehe kuwa siku, mwezi na mwaka. Tumia hii kwa kutumia mifuko:

php<?php
  $str = '2025-10-29';
  $reg = '#(\d{4})-(\d{2})-(\d{2})#';
  
  preg_match($reg, $str, $match);
  var_dump($match); // atatoa ['2025-10-29', '2025', '10', '29']
?>

Kama unavyoona, kwa matokeo tunapata safu, ambayo kwenye kipengele cha sifuri kutakuwa na tarehe yote, ya kwanza - mwaka, ya pili - mwezi, ya tatu - siku.

Wakati mwingine, hata hivyo, ingekuwa rahisi kupata yaliyomo ya mifuko kwa namna ya safu ya kiashiria. Yaani kwa kesi yetu ingekuwa vizuri kupata safu kama hii:

php[
  'year'  => '2025',
  'month' => '10',
  'day'   => '29'
]

Kwa hili katika usimbaji fupu kuna sintaksia maalum. Hii ni hii: (?<name>pattern), ambapo pattern - hii ni usimbaji fupi, na name - hili ni jina la mfuko.

Wacha tuandike tena usimbaji wetu fupi wa tarehe kupitia mifuko yenye majina:

php<?php
  $str = '2025-10-29';
  $reg = '#(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})#';
  
  preg_match($reg, $str, $match);
  var_dump($match);
?>

Kwa matokeo tutapata safu ya kiashiria, ambayo funguo zitakuwa majina ya mifuko, na maadili - yale yaliyoingia ndani yake:

php[
  'year'  => '2025',
  'month' => '10',
  'day'   => '29',
]

Kwa kweli katika safu na matokeo maadili ya mifuko yatapatikana kwa jina na kwa nambari ya mpangilio. Yaani, kwa mfano, mwaka utapatikana kwa funguo 'year' na kwa nambari 1, mwezi - kwa funguo 'month' na kwa nambari 2 na kadhalika:

php[
  'year'  => '2025',
  'month' => '10',
  'day'   => '29',
  
  1       => '2025',
  2       => '10',
  3       => '29'
]

Mifuko iliyoelezwa yenye majina ina sintaksia mbadala kadhaa zaidi: (?P<name>pattern) na (?'name'pattern).

Задание 1

Imetolewa kamba na wakati:

php<?php
  $str = '12:59:59';
?>

Weka masaa, dakika na sekunde kwenye mifuko tofauti yenye majina.

Задание 2

Andika kitendakazi, ambacho katika safu na matokeo itafuta mifuko yote iliyopangwa kwa nambari, ikiacha ile yenye majina tu.