Comment

PHP Advanced Array Operations (অ্যাডভান্সড অ্যারে অপারেশন)

PHP অ্যারে ফিল্টার ফাংশন (array_filter()  )

Estimated reading: 2 minutes 10 views Contributors

সারাংশ: আপনি শিখবেন কিভাবে একটি callback ফাংশন ব্যবহার করে একটি অ্যারের element filter করতে PHP array_filter() ফাংশন ব্যবহার করতে হয়।

PHP অ্যারে ফিল্টার ফাংশন-এর পরিচিতি

আপনি যখন অ্যারের উপাদানকে ফিল্টার করতে চান, আপনি প্রায়শই উপাদান এর উপর পুনরাবৃত্তি করেন এবং রেজাল্ট অ্যারেতে প্রতিটি রেজাল্ট অন্তর্ভুক্ত করা উচিত কিনা তা পরীক্ষা করেন ৷

নিম্নলিখিত উদাহরণটি  $numbers অ্যারের উপাদান এর উপর পুনরাবৃত্তি করতে এবং odd সংখ্যাকে ফিল্টার করতে foreach স্টেটমেন্ট ব্যবহার করে:

<?php

$numbers = [1, 2, 3, 4, 5];
$odd_numbers = [];

foreach ($numbers as $number) {
	if ($number % 2 === 1) {
		$odd_numbers[] = $number;
	}
}

print_r($odd_numbers);

আউটপুট:

Array
(
    [0] => 1
    [1] => 3
    [2] => 5
)

array_filter()  ফাংশন কোডকে কম শব্দবহুল এবং আরও স্পষ্ট করে তোলে:

<?php

$numbers = [1, 2, 3, 4, 5];

$odd_numbers = array_filter(
	$numbers,
	function ($number) {
		return $number % 2 === 1;
	}
);

print_r($odd_numbers);

PHP 7.4 থেকে, আপনি অ্যানোনিমাস ফাংশনের পরিবর্তে arrow ফাংশন ব্যবহার করতে পারেন:

<?php

$numbers = [1, 2, 3, 4, 5];

$odd_numbers = array_filter(
	$numbers,
	fn ($number) => $number % 2 === 1
);

print_r($odd_numbers);

array_filter()  ফাংশন আপনাকে কলব্যাক ফাংশন ব্যবহার করে একটি অ্যারের উপাদান ফিল্টার করতে দেয়।

নিম্নলিখিত array_filter()  ফাংশনের সিনট্যাক্স উপস্থাপন করে:

array_filter ( 
    array $array , 
    callable|null $callback = null , 
    int $mode = 0 
) : array

array_filter() ফাংশন $array -এর উপাদান এর উপর পুনরাবৃত্তি করে এবং প্রতিটি উপাদানকে $callback ফাংশনে পাস করে। কলব্যাক ফাংশন  true হলে, array_filter()  ফাংশনে রেজাল্ট অ্যারের উপাদান হিসেবে অন্তর্ভুক্ত থাকে।

PHP অ্যারে ফিল্টার ফাংশন-এর উদাহরণ

array_filter() ফাংশন আরও ভালভাবে বোঝার জন্য কিছু উদাহরণ নেওয়া যাক।

১) মৌলিক অ্যারে ফিল্টার ফাংশন-এর উদাহরণ :-

$numbers অ্যারের সমস্ত odd নাম্বার ফিল্টার করতে, আপনি নিচের মতো array_filter() ফাংশন ব্যবহার করুন:

<?php

$numbers = [1, 2, 3, 4, 5];

$even_numbers = array_filter(
	$numbers,
	function ($number) {
		return $number % 2 === 0;
	}
);

print_r($even_numbers);

২) ক্লাসের মেথড হিসাবে কলব্যাক ব্যবহার করা

একটি কলব্যাক ছাড়াও, আপনি array_filter() ফাংশনে ক্লাসের একটি মেথড পাস করতে পারেন এইভাবে:

array_filter($items,[$instance,'callback']);

উদাহরণ স্বরূপ:

class Odd
{
    public function isOdd($num)
    {
        return $num % 2 === 1;
    }
}

 Odd ক্লাস এর একটি isOdd() আছে যা আর্গুমেন্ট odd নাম্বার হলে true দেখায়; অন্যথায়, এটি false দেখায়।

array_filter()  ফাংশনের কলব্যাক হিসাবে isOdd() মেথড ব্যবহার করতে, আপনি নিম্নলিখিত ফর্ম ব্যবহার করুন:

<?php

class Odd
{
	public function isOdd($num)
	{
		return $num % 2 === 1;
	}
}

$numbers = [1, 2, 3, 4, 5];
$odd_numbers = array_filter(
	$numbers,
	[new Odd(), 'isOdd']
);

print_r($odd_numbers);

আপনার যদি একটি ক্লাস থাকে যার একটি  static method আছে, তাহলে আপনি array_filter() ফাংশনের কলব্যাক হিসাবে স্টাটিক মেথড পাস করবেন:

array_filter($array, ['Class','callback']);

উদাহরণ স্বরূপ:

<?php

class Even
{
    public static function isEven($num)
    {
        return $num % 2 === 0;
    }
}

Even  ক্লাসের একটি স্টাটিক মেথড  isEven() আছে, যদি আর্গুমেন্ট even হয় সেটি true  দেখায় , অন্যথায়, এটি false দেখায়।

নিম্নলিখিত array_fitler() ফাংশনের কলব্যাক হিসাবে isEven() স্টাটিক মেথড ব্যবহার করে:

$even_numbers = array_filter($numbers, ['Even','isEven']);

PHP 5.3 থেকে, যদি কোনো ক্লাস  __invoke() magic method বাস্তবায়ন করে,, আপনি এটিকে কলব্যাক হিসেবে ব্যবহার করতে পারেন।

উদাহরণ স্বরূপ:

<?php

class Positive
{
    public function __invoke($number)
    {
        return $number  > 0;
    }
}

এই উদাহরণে, Positive ক্লাসে  __invoke() মেজিক মেথড রয়েছে যা আর্গুমেন্ট positive হলে true দেখায়; অন্যথায়, এটি false ফেরত দেয়। রেজাল্ট অ্যারেতে শুধুমাত্র Positive নাম্বার অন্তর্ভুক্ত করার জন্য আপনি array_filter() ফাংশনে Positive ক্লাসের একটি উদাহরণ পাস করতে পারেন।

<?php

class Positive
{
	public function __invoke($number)
	{
		return $number > 0;
	}
}

$numbers = [-1, -2, 0, 1, 2, 3];
$positives = array_filter($numbers, new Positive());

print_r($positives);

আউটপুট:

Array
(
    [3] => 1
    [4] => 2
    [5] => 3
)

কলব্যাক ফাংশনে উপাদান পাস করা

ডিফল্টভাবে , array_filter() ফাংশন ফিল্টারিংয়ের জন্য কলব্যাক ফাংশনে প্রতিটি অ্যারে উপাদান -এর ভেল্যু পাস করে।

কখনও কখনও, আপনি কলব্যাক ফাংশনে কী, নট ভেল্যু, পাস করতে চান। এই ক্ষেত্রে, আপনি বাই ডিফল্ট, ফাংশনের তৃতীয় আর্গুমেন্ট হিসেবে ARRAY_FILTER_USE_KEY পাস করতে পারেন।

উদাহরণ স্বরূপ:

<?php

$inputs = [
	'first' => 'John',
	'last' => 'Doe',
	'password' => 'secret',
	'email' => 'john.doe@example.com'
];

$filtered = array_filter(
	$inputs,
	fn ($key) => $key !== 'password',
	ARRAY_FILTER_USE_KEY
);

print_r($filtered);

আউটপুট:

Array
(
    [first] => John
    [last] => Doe
    [email] => john.doe@example.com
)

এই উদাহরণে, $filtered-এ $inputs অ্যারের সমস্ত উপাদান রয়েছে যার কী হল password.

কলব্যাক ফাংশনে উপাদানের কী এবং ভেল্যু উভয়ই পাস করতে, আপনি  array_filter()  ফাংশনের তৃতীয় আর্গুমেন্ট হিসেবে ARRAY_FILTER_USE_BOTH  মানটি পাস করেন।

উদাহরণ স্বরূপ

<?php

$inputs = [
	'first' => 'John',
	'last' => 'Doe',
	'password' => 'secret',
	'email' => ''
];

$filtered = array_filter(
	$inputs,
	fn ($value, $key) => $value !== '' && $key !== 'password',
	ARRAY_FILTER_USE_BOTH
);

print_r($filtered);

আউটপুট:

Array
(
    [first] => John
    [last] => Doe
)

এই টিউটোরিয়ালে, আপনি শিখেছেন কিভাবে একটি কলব্যাক ব্যবহার করে একটি অ্যারের উপাদানকে ফিল্টার করতে PHP array_filter() ফাংশন ব্যবহার করতে হয়।

Leave a Comment

Share this Doc

PHP অ্যারে ফিল্টার ফাংশন (array_filter()  )

Or copy link

CONTENTS

Subscribe

×
Cancel