PHP တွင် အဆောက်အဦး လုပ်ဆောင်ချက်များအတွင်း Callbacks များ

PHP တွင် callbacks များကို parameter အဖြစ် လက်ခံသော အဆောက်အဦး လုပ်ဆောင်ချက် အများအပြားရှိသည်။ ၎င်းတို့နှင့် အလုပ်လုပ်ခြင်း၏ ယေဘူယျ နိယာမကို ကျွန်ုပ်တို့သည် array_map လုပ်ဆောင်ချက်၏ ဥပမာဖြင့် လေ့လာပါမည်။ ဤလုပ်ဆောင်ချက်သည် ပထမ parameter အဖြစ် callback ကို လက်ခံပြီး ဒုတိယအနေဖြင့် array ကို လက်ခံသည်။ ဤလုပ်ဆောင်ချက်သည် array ၏ အရာဝတ္ထုတစ်ခုစီသို့ callback ကို အသုံးပြုပြီး ပြောင်းလဲထားသော array ကို ပြန်ပေးသည်။

ကျွန်ုပ်တို့ ယခင်က ရရှိထားသော အသိပညာများကို ထည့်သွင်းစဉ်းစား၍ ဤလုပ်ဆောင်ချက်ကို အသုံးပြုသည့် နည်းလမ်းများကို ကြည့်ကြပါစို့။

နည်းလမ်း ၁

Array ၏ အရာဝတ္ထုတစ်ခုစီမှ နှစ်ထပ်ကိန်း ရင်းကို အဆောက်အဦး လုပ်ဆောင်ချက် sqrt ကို အသုံးပြု၍ ထုတ်ယူကြပါစို့။ ဤသို့ပြုလုပ်ရန် callback အဖြစ် parameter တွင် ဤလုပ်ဆောင်ချက်၏ အမည်ပါသော string ကို ပေးပို့ပါမည်။

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

နည်းလမ်း ၂

ကျွန်ုပ်တို့ ဖန်တီးထားသော ပုံမှန် လုပ်ဆောင်ချက်ကို အသုံးပြု၍ array ၏ အရာဝတ္ထုတစ်ခုစီကို နှစ်ထပ်ကိန်း တင်ကြပါစို့။ ဤသို့ပြုလုပ်ရန် callback အဖြစ် parameter တွင် ဤလုပ်ဆောင်ချက်၏ အမည်ပါသော string ကို ပေးပို့ပါမည်။

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

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

နည်းလမ်း ၃

ကျွန်ုပ်တို့၏ လုပ်ဆောင်ချက်ကို variable ထဲတွင် သိမ်းထားသော anonymous function အဖြစ် ပြောင်းလဲပါမည်။

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

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

နည်းလမ်း ၄

Anonymous function ကို parameter အဖြစ် ပေးပို့ပါမည်။

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

နည်းလမ်း ၅

Arrow function ကို အသုံးပြုပါမည်။

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

နည်းလမ်း ၆

ယခုအခါ ဂဏန်းတစ်ခုကို တင်ရမည့် ထပ်ကိန်းသည် callback ၏ အပြင်ဘက် variable မှ သတ်မှတ်ပေးထားသည်ဆိုပါစို့။ use မှတစ်ဆင့် ရယူခြင်းဖြင့် ဤ variable ကို အသုံးပြုကြပါစို့။

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

နည်းလမ်း ၇

ယခင်က code ကို arrow function မှတစ်ဆင့် ပြန်ရေးကြပါစို့။ ယခုအခါ $pow variable သည် အလိုအလျောက် ရရှိနိုင်မည် ဖြစ်သည်။

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

လက်တွေ့ပုစ္ဆာများ

Задание 1

String များ ပါဝင်သော array တစ်ခု ရှိသည်။ Array ၏ အရာဝတ္ထုတစ်ခုစီ၏ စာသားကို အကြီးစာလုံး သို့ ပြောင်းလဲပါ။

Задание 2

String များ ပါဝင်သော array တစ်ခု ရှိသည်။ Array ၏ အရာဝတ္ထုတစ်ခုစီ၏ စာသားကို ပြောင်းပြန်လှန်ပါ၊ ထိုသို့ဆိုလျှင် အက္ခရာများသည် ပြောင်းပြန် အစီအစဥ်ဖြင့် သွားလိမ့်မည်။