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 ) : arrayarray_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() ফাংশন ব্যবহার করতে হয়। PHP Advanced Array Operations (অ্যাডভান্সড অ্যারে অপারেশন) - Previous PHP অ্যারে-ম্যাপ (array_map() ) Next - PHP Advanced Array Operations (অ্যাডভান্সড অ্যারে অপারেশন) PHP অ্যারে রিডিউস (array_reduce() )