PHPda preg_match_all xatti-harakati o'zgartirish

preg_match_all funksiyasining to'rtinchi parametri yordamida guruhlash usulini o'zgartirish mumkin.

Keling, ushbu parametr qanday qiymatlarni qabul qilishini ko'rib chiqaylik:

Parametr Ta'rif
PREG_PATTERN_ORDER Standart rejim. Natijalar guruhlar bo'yicha guruhlanadi - massivning nolinchi elementi nolinchi guruhlarni o'z ichiga oladi, birinchi elementi birinchi guruhlarni o'z ichiga oladi va hokazo.
PREG_SET_ORDER Natijalar mosliklar bo'yicha guruhlanadi - massivning har bir elementi topilgan guruhlarni o'z ichiga olgan massivni o'z ichiga oladi.

Keling, endi ushbu parametrning qo'llanilishini misollar orqali ko'rib chiqaylik:

Misol

Satrdan barcha vaqt belgilarini va ularning tarkibiy qismlarini ajratib olamiz:

php<?php
  $time = '12:01:02 13:03:04 14:05:06';
  preg_match_all('#(\d\d):(\d\d):(\d\d)#', $time, $res);
  print_r($res);
?>

Kodni bajarish natijasi:

php[
  0 => ['12:01:02', '13:03:04', '14:05:06'],
  1 => ['12', '13', '14'],
  2 => ['01', '03', '05'],
  3 => ['02', '04', '06']
]

Misol

Endi mosliklar bo'yicha guruhlash uchun PREG_SET_ORDER bayrog'idan foydalanamiz:

php<?php
  $time = '12:01:02 13:03:04 14:05:06';
  preg_match_all('#(\d\d):(\d\d):(\d\d)#', $time, $res, PREG_SET_ORDER);
  print_r($res);
?>

Kodni bajarish natijasi:

php[
  0 => '12:01:02',
  1 => '12',
  2 => '01',
  3 => '02'
],
[
  0 => '13:03:04',
  1 => '13',
  2 => '03',
  3 => '04'
],
[
  0 => '14:05:06',
  1 => '14',
  2 => '05',
  3 => '06'
]

Amaliy vazifalar

Задание 1

Sanalar bilan satr berilgan:

php<?php
  $str = '2023-10-29 2024-11-30 2025-12-31';
?>

Barcha sanalarni toping, yil, oy va kunni alohida guruhlarga ajrating. Birinchi kichik massivga birinchi sana uning guruhlari bilan, ikkinchi kichik massivga ikkinchi sana uning guruhlari bilan va hokazo tushishi uchun qiling.