კოლბექები PHP-ის ჩაშენებულ ფუნქციებში

PHP-ში არის რიგი ჩაშენებული ფუნქციები, რომლებიც პარამეტრად იღებენ კოლბექებს. მათთან მუშაობის ზოგად პრინციპს ჩვენ ვისწავლით array_map ფუნქციის მაგალითზე. ეს ფუნქცია პირველ პარამეტრად იღებს კოლბექს, ხოლო მეორედ - მასივს. ფუნქცია ასრულებს კოლბექის გამოყენებას მასივის თითოეულ ელემენტზე და აბრუნებს შეცვლილ მასივს.

მოდით შევხედოთ ამ ფუნქციის გამოყენების ვარიანტებს ჩვენს მიერ ადრე მოპოვებული ცოდნის გათვალისწინებით.

ვარიანტი 1

მასივის თითოეული ელემენტიდან ამოვიღოთ კვადრატული ფესვი ჩაშენებული ფუნქციის sqrt დახმარებით. ამისთვის პარამეტრად კოლბექად გადავცემთ ამ ფუნქციის სახელის მქონე სტრიქონს:

php<?php
  $arr = [1, 2, 3, 4, 5];
  
  $res = array_map('sqrt', $arr);
  var_dump($res);
?>

ვარიანტი 2

მასივის თითოეული ელემენტი ავიყვანოთ კვადრატში ჩვენს მიერ შექმნილი ჩვეულებრივი ფუნქციის დახმარებით. ამისთვის პარამეტრად კოლბექად გადავცემთ ამ ფუნქციის სახელის მქონე სტრიქონს:

php<?php
  $arr = [1, 2, 3, 4, 5];
  
  function func($num) {
    return $num ** 2;
  }

  $res = array_map('func', $arr);
  var_dump($res);
?>

ვარიანტი 3

გადავაკეთოთ ჩვენი ფუნქცია ანონიმურ ფუნქციად, რომელიც ჩაიწერება ცვლადში:

php<?php
  $arr = [1, 2, 3, 4, 5];
  
  $func = function ($num) {
    return $num ** 2;
  };

  $res = array_map($func, $arr);
  var_dump($res);
?>

ვარიანტი 4

გადავცეთ ანონიმური ფუნქცია პარამეტრად:

php<?php
  $arr = [1, 2, 3, 4, 5];
  
  $res = array_map(function ($num) {
    return $num ** 2;
  }, $arr);
  
  var_dump($res);
?>

ვარიანტი 5

გამოვიყენოთ ისრის ფუნქცია:

php<?php
  $arr = [1, 2, 3, 4, 5];
  
  $res = array_map(fn ($num) => $num ** 2, $arr);
  var_dump($res);
?>

ვარიანტი 6

მოდით ახლა ხარისხი, რომელშიც საჭიროა რიცხვის აყვანა, განისაზღვროს კოლბექის გარე ცვლადით. გამოვიყენოთ ეს ცვლადი, მივწვდეთ მას use-ის მეშვეობით:

php<?php
  $arr = [1, 2, 3, 4, 5];
  $pow = 3;
  
  $res = array_map(function ($num) use ($pow) {
    return $num ** $pow;
  }, $arr);
  
  var_dump($res);
?>

ვარიანტი 7

გადავიწეროთ წინა კოდი ისრის ფუნქციის მეშვეობით. ახლა ცვლადი $pow ხელმისაწვდომი იქნება ავტომატურად:

php<?php
  $arr = [1, 2, 3, 4, 5];
  $pow = 3;
  
  $res = array_map(fn ($num) => $num ** $pow, $arr);
  var_dump($res);
?>

პრაქტიკული ამოცანები

Задание 1

მოცემულია მასივი სტრიქონებით. თარგმნეთ თითოეული ელემენტის ტექსტი ზედა რეგისტრში.

Задание 2

მოცემულია მასივი სტრიქონებით. შეაბრუნეთ თითოეული ელემენტის ტექსტი ისე, რომ სიმბოლოები მიდიოდნენ უკუთანმიმდევრობით.