PHP Array General Functions
PHP Array General Functions Part-3: array_sum, array_product, array_reduce and count function
PHP Array General Function গুলো নিয়ে তৃতীয় পর্বে আপনাকে স্বাগতম। আজকের পর্বে আমরা array_sum(), array_product(), array_reduce() এবং count() functions এর বিস্তারিত আলোচনা করব।
PHP array_sum() Function
PHP-তে array_sum ফাংশনটি একটি অ্যারের মধ্যে সমস্ত numeric value গুলোর যোগফল গণনা করতে ব্যবহৃত হয়। এটি input হিসেবে একটি array type এর একক প্যারামিটার নেয় , অর্থাৎ যেই array এর জন্য আপনি যোগফল ক্যালকুলেট করতে চান। আরো সহজ করে বললে, php তে কোনো array এর সব গুলো value এর যোগফল বের করতে চাইলে আপনি array_sum() function টি ব্যবহার করতে পারেন।
Syntax:
array_sum(array $array): int|float
Parameter:
array (Required): এটি সেই অ্যারে যার জন্য আপনি এর numeric value গুলোর যোগফল গণনা করতে চান। এটি array_sum ফাংশনের একমাত্র প্যারামিটার। আপনি যে অ্যারেটি প্রক্রিয়া করতে চান তা প্রদান করুন এবং array_sum সেই অ্যারের মধ্যে সমস্ত numeric value গুলো যোগ করবে। তবে অ্যারের মধ্যে অবস্থিত Non-numeric values গুলো ignore করা হয়।
Return Value:
array_sum একটি single numeric value হিসাবে input array এর সমস্ত numeric value গুলোর যোগফল রিটার্ন করে। যদি অ্যারেটি empty থাকে বা কোনো numeric values না থাকে, তাহলে ফাংশনটি 0 (শূন্য) প্রদান করে।
array_sum() ফাঙ্কশন কিভাবে কাজ করে?
যেটা আমরা সংজ্ঞায়, বলেছি array_sum ফাংশন একটি array কে input হিসাবে গ্রহণ করে এবং সেই অ্যারের মধ্যে থাকা সমস্ত numeric value গুলোর সমষ্টি যোগফল ক্যালকুলেট করে। এটি আরও বিস্তারিত কীভাবে কাজ করে তা এখানে দেওয়া হলো:
- Input: আপনি array_sum ফাংশনে আর্গুমেন্ট হিসাবে একটি array পাস করেন।
- Iterate Through Array: array_sum অ্যারের element গুলির মাধ্যমে এক এক করে iterate করে।
- Check for Numeric Values: প্রতিটি element এর জন্য, এটি এলিমেনটির numeric (integer বা floating-point number) কিনা তা পরীক্ষা করে। Non-numeric value, যেমন strings বা অন্যান্য data type গুলো, ignore করা হয়।
- Accumulate the Sum: যদি এলিমেন্টটি numeric হয়, তবে এটি সেই এলিমেন্টটির value এর একটি accumulator variable এ যোগ করে যা running sum এর ট্র্যাক রাখে।
- Return the Sum: অ্যারের সমস্ত এলিমেন্টগুলির মাধ্যমে iterating করার পরে, ফাংশনটি ফলাফল হিসাবে accumulated sum কে রিটার্ন করে।
এখানে array_sum এর pseudocode কিভাবে কাজ করতে পারে তার একটি simplified উপস্থাপনা:
function array_sum(array) sum = 0 // Initialize the sum to zero for each element in array if element is numeric sum = sum + element // Add the numeric element to the sum return sum
এখানে array_sum ফাংশন ব্যবহার করার একটি উদাহরণ:
$numbers = [10, 20, 30, 40, 50]; $total = array_sum($numbers); echo "The sum of the numbers is: $total"; // Output: The sum of the numbers is: 150
এই উদাহরণে, array_sum() ফাংশনটিকে অ্যারে $numbers এর parameter হিসাবে ডাকা হয় এবং এটি অ্যারের numeric value গুলোর যোগফল গণনা করে, যার ফলে 150 হয়।
নিম্নে array এর value হিসেবে float নম্বর ব্যবহার করে আরো একটি উদাহরণ দেওয়া হলো :
$b = array("a" => 1.2, "b" => 2.3, "c" => 3.4); echo "sum(b) = " . array_sum($b) . "\n"; //Output: sum(b) = 6.9
তবে array_sum ফাংশনটি তার strings value গুলিকে float এ রূপান্তর করে এবং যদি উক্ত string গুলো পরিবর্তনযোগ্য না হয়, টি তাহলে সেই strings গুলিকে ignores করে :
<?php $a = array("String", 2, 4, 6, 8); echo "sum(a) = " . array_sum($a) . "\n"; //Output: sum(a) = 20 $b = array("12.3456", 2, 4, 6, 8); echo "sum(b) = " . array_sum($b) . "\n"; //Output: sum(b) = 32.3456 ?>
আপনি যদি multi-dimensional array এর যোগফল গণনা করতে চান? সেক্ষেত্রে নিন্মোক্ত কৌশল অবলম্বন করতে পারেন:
<?php function array_multisum(array $arr): float { $sum = array_sum($arr); foreach($arr as $child) { $sum += is_array($child) ? array_multisum($child) : 0; } return $sum; } ?>
Usage Example:
<?php $data = [ 'a' => 5, 'b' => [ 'c' => 7, 'd' => 3 ], 'e' => 4, 'f' => [ 'g' => 6, 'h' => [ 'i' => 1, 'j' => 2 ] ] ]; echo array_multisum($data); //output: 28 ?>
এটা মনে রাখা গুরুত্বপূর্ণ যে array_sum শুধুমাত্র numeric value গুলির সাথে কাজ করে এবং non-numeric value গুলিকে ignore করে, যা এটিকে আপনার কোডে স্পষ্ট লুপ বা শর্তসাপেক্ষ চেকের প্রয়োজন ছাড়াই একটি অ্যারেতে numeric ডেটার যোগফল দ্রুত ক্যালকুলেট করার জন্য একটি সুবিধাজনক টুল করে তোলে৷
PHP array_product() Function
PHP-তে array_product() ফাংশনটি একটি অ্যারের মধ্যে থাকা সমস্ত মানগুলির গুণফল গণনা করতে ব্যবহৃত হয়। এটি input হিসেবে একটি একক array প্যারামিটার গ্রহণ করে, অর্থাৎ আপনি যে অ্যারে টির গুনফল গণনা করতে চান। নিম্নে array_product() ফাঙ্কশনের সিনটেক্স দেওয়া হলো:
array_product(array $array): int|float
Parameter:
array (Required): এটি সেই array যার জন্য আপনি এর মানগুলির গুণফল গণনা করতে চান। এটি array_product() ফাংশনের একমাত্র প্যারামিটার। আপনি যে অ্যারেটি প্রক্রিয়া করতে চান তা প্রদান করুন এবং array_product() সেই অ্যারের মধ্যে থাকা সমস্ত মানকে গুণ করবে। এছাড়া অ্যারের Non-numeric মানগুলিকে 1 হিসাবে বিবেচনা করা হয়।
Return Value:
array_product ইনপুট অ্যারের সমস্ত মানের গুণফলকে একটি single numeric value হিসাবে return করে। অ্যারেটি ফাঁকা থাকলে, এটি 1 রিটার্ন করে।
array_product() ফাঙ্কশন কিভাবে কাজ করে?
ইতিমধ্যে আপনি জানেন, PHP-তে array_product() ফাংশনটি একটি অ্যারের মধ্যে থাকা সমস্ত মানগুলির গুণফল গণনা করতে ব্যবহৃত হয়। এটি আরও বিশদে কীভাবে কাজ করে তা এখানে:
- Input: আপনি array_product ফাংশনে আর্গুমেন্ট হিসেবে একটি অ্যারে পাস করেন।
- Iterate Through Array: array_product অ্যারের element গুলির মাধ্যমে একের পর এক iterate করে।
- Multiplication: প্রতিটি এলিমেন্টের জন্য, এটি running product এর সাথে এলিমেন্টের মানকে গুণ করে। running product এর initial মান হল 1।
- Check for Numeric Values: যদি উপাদানটি numeric হয় (integer অথবা floating-point number), তাহলে এটি multiplication এর মধ্যে অন্তর্ভুক্ত করা হয়। Non-numeric মান, যেমন strings বা অন্যান্য data types, সেগুলিকে 1 হিসাবে বিবেচনা করা হয় এবং সেই অনুযায়ী প্রোডাক্টে অন্তর্ভুক্ত করা হয়।
- Accumulate the Product: সমস্ত numeric এবং গণনা করা numeric মানগুলিকে গুণ করার ফলাফল চলমান প্রোডাক্টে সংরক্ষণ করা হয়।
- Return the Product: অ্যারের সমস্ত উপাদানগুলির মাধ্যমে iterate করার পরে, ফাংশনটি result হিসাবে থাকা product টি return দেয়।
এখানে array_product pseudocode কিভাবে pseudocode কাজ করতে পারে তার একটি সরলীকৃত উপস্থাপনা দেওয়া হলো:
function array_product(array) product = 1 // Initialize the product to 1 for each element in array if element is numeric product = product * element // Multiply the numeric element with the product else product = product * 1 // Treat non-numeric values as 1 return product
এখানে array_product() ফাংশন ব্যবহার করার একটি উদাহরণ দেওয়া হলো:
$numbers = [2, 3, 5, 7]; $product = array_product($numbers); echo "The product of the numbers is: $product"; // Output: The product of the numbers is: 210
এই উদাহরণে, array_product() ফাংশনটিকে array $numbers এর parameter হিসাবে বলা হয়। এটি অ্যারের মানগুলির গুণফল গণনা করে, যার ফলে 210 (2 * 3 * 5 * 7) হয়।
যদি অ্যারেতে non-numeric value থাকে, যেমন strings, সেগুলিকে গুণে 1 হিসাবে বিবেচনা করা হয়। উদাহরণ স্বরূপ:
$mixedArray = [2, 3, 'abc', 5, 'def', 7]; $product = array_product($mixedArray); echo "The product of the mixed array is: $product"; // Output: The product of the mixed array is: 210
এই ক্ষেত্রে, non-numeric value গুলো যেমন : ‘abc’ এবং ‘def’ ইগনোর করা হয়, এবং ফলাফল 210 (2 * 3 * 1 * 5 * 1 * 7) থাকে ।
range এবং array_product ফাংশন এর সাহায্যে আপনি কীভাবে একটি প্রদত্ত সংখ্যার factorial বের করতে পারেন তা এখানে দেওয়া হলো :
function factorial($num) { return array_product(range(1, $num)); } printf("%d", factorial(5)); //120
আপনি যদি multi-dimensional array এর গুনফল গণনা করতে চান? সেক্ষেত্রে নিন্মোক্ত কৌশল অবলম্বন করতে পারেন:
<?php function array_multiproduct(array $arr): float { $product = array_product($arr); foreach($arr as $child) { $product *= is_array($child) ? array_multiproduct($child) : 1; } return $product; } ?> Example: <?php $data = [ 'a' => 5, 'b' => [ 'c' => 7, 'd' => 3 ], 'e' => 4, 'f' => [ 'g' => 6, 'h' => [ 'i' => 1, 'j' => 2 ] ] ]; echo array_multiproduct($data); //output: 5040 ?>
এটা মনে রাখা গুরুত্বপূর্ণ যে array_product শুধুমাত্র numeric value গুলির সাথে কাজ করে এবং non-numeric value গুলিকে 1 হিসেবে বিবেচনা করে, যা এটিকে আপনার কোডে স্পষ্ট লুপ বা শর্তসাপেক্ষ চেকের প্রয়োজন ছাড়াই একটি অ্যারেতে numeric ডেটার গুণফল দ্রুত ক্যালকুলেট করার জন্য একটি সুবিধাজনক টুল করে তোলে৷
PHP array_reduce() Function
PHP -তে array_reduce function টি user-defined callback function ব্যবহার করে একটি অ্যারেকে iteratively reduce করে একটি single value তে অর্থাৎ একক মানেতে বা ফলাফলে নিয়ে আসতে ব্যবহৃত হয়। এই ফাংশনটি বেশ বহুমুখী এবং কলব্যাক ফাংশনের লজিকের উপর ভিত্তি করে একটি একক ফলাফল সংগ্রহ করে আপনাকে অ্যারের উপাদানগুলিতে কাস্টম অপারেশন করতে দেয়৷
এখানে array_reduce() function এর মৌলিক সিনট্যাক্স দেওয়া হলো:
array_reduce(array $array, callable $callback, mixed $initial = null): mixed
- $array: এটি হল ইনপুট অ্যারে যা আপনি একক মানে বা value তে নিয়ে আসতে চান।
- $callback: একটি callable function যা কি ধরণের reduction operation হবে তা সংজ্ঞায়িত করে। কলব্যাক ফাংশন দুটি আর্গুমেন্ট নেয়:
- $carry: যা previous iteration এর রিটার্ন মান ধরে রাখে; এবং first iteration এর ক্ষেত্রে এটি এর পরিবর্তে initial value ধারণ করে।
- $item: যা current iteration এর value ধরে রাখে।
- $initial (optional): $carry এর জন্য একটি optional initial value. যদি এই মানটি দেওয়া থাকে , কলব্যাক ফাংশন এই প্রাথমিক মান দিয়ে শুরু হয়; অন্যথায়, অ্যারের প্রথম এলিমেন্টটি প্রাথমিক মান হিসাবে ব্যবহৃত হয়। আর অ্যারে খালি থাকলে চূড়ান্ত ফলাফল হিসাবে ব্যবহার করা হবে।
array_reduce() ফাঙ্কশন কিভাবে কাজ করে?
যা ইতিমধ্যে আপনি জেনেছেন , PHP -তে array_reduce function টি user-defined callback function ব্যবহার করে একটি অ্যারেকে iteratively reduce করে একটি single value তে অর্থাৎ একক মানেতে বা ফলাফলে নিয়ে আসতে ব্যবহৃত হয়। এটি আরও বিশদে কীভাবে কাজ করে তা এখানে:
- Initialization: যদি একটি initial value প্রদান করা হয়, array_reduce() $carry কে সেই প্রাথমিক value তে সেট করে। যদি তা না হয় তবে এটি অ্যারের প্রথম উপাদানটিকে initial carry value হিসাবে ব্যবহার করে।
- Iteration: array_reduce() অ্যারের মাধ্যমে element by element iterate করে।
- Callback Function: অ্যারের প্রতিটি উপাদানের জন্য, এটি আপনার প্রদান করা কলব্যাক ফাংশনকে কল করে। কলব্যাক ফাংশন দুটি আর্গুমেন্ট গ্রহণ করে: current carry value (step 1 এ শুরু করা হয়েছে) এবং current array element
- Update Accumulator: কলব্যাক ফাংশনের ভিতরে, আপনি current element এবং carry এর উপর সঞ্চালিত অপারেশনটি সংজ্ঞায়িত করেন। এই অপারেশনের ফলাফল পরবর্তী iteration এর জন্য নতুন carry এর মান হয়ে যায়।
- Repeat: সমস্ত এলিমেন্ট প্রসেস না হওয়া পর্যন্ত অ্যারের প্রতিটি এলিমেন্টের জন্য ধাপ 3 এবং 4 পুনরাবৃত্তি করা হয়।
- Return Result: সমস্ত উপাদান প্রক্রিয়াকরণের পর, array_reduce() operation এর ফলাফল হিসাবে চূড়ান্ত carry এর মানটি রিটার্ন দেওয়া হয়।
এখানে array_reduce() function এর pseudocode কিভাবে কাজ করতে পারে তার একটি simplified উপস্থাপনা:
function array_reduce(array, callback, initial) if initial is provided carry = initial else carry = first element of array for each element in array carry = callback(carry, element) return carry
এখানে একটি অ্যারের সমস্ত element এর যোগফল গণনা করতে array_reduce() ফাঙ্কশন ব্যবহার করার একটি উদাহরণ দেওয়া হলো:
$numbers = [1, 2, 3, 4, 5]; // Use array_reduce to calculate the sum $sum = array_reduce($numbers, function ($carry, $current) { return $carry+ $current; }, 0); echo "The sum is: $sum"; // Output: The sum is: 15
এই উদাহরণে, $numbers অ্যারের সমস্ত উপাদান যোগ করতে আমরা array_reduce() function ব্যবহার করি। কলব্যাক ফাংশন $carry এবং current element ($current) গ্রহণ করে এবং আপডেট করা $carry (এই ক্ষেত্রে $carry এবং $current এর সমষ্টি) প্রদান করে।
এখানে একটি অ্যারের সমস্ত element এর গুনফল গণনা করতে array_reduce() ফাঙ্কশন ব্যবহার করার একটি উদাহরণ দেওয়া হলো:
<?php $numbers = [1, 2, 3, 4, 5]; // Use array_reduce to calculate the sum $multiplication = array_reduce($numbers, function ($carry, $current) { return $carry* $current; }, 1); echo "The multiplication is: $multiplication"; // Output: The sum is: 120
PHP Array count() function
PHP-তে, count() ফাংশনটি একটি array এর element এর সংখ্যা বা একটি object এর property গুলো count করতে ব্যবহৃত হয়। এর প্রাথমিক উদ্দেশ্য হল একটি অ্যারে বা অবজেক্টের size বা length নির্ধারণ করা। নিম্নে এর বেসিক সিনট্যাক্স দেওয়া হলো:
count(array, mode)
- array: যে array বা object এর জন্য আপনি element বা property গুলো গণনা করতে চান।
- mode (optional): একটি optional parameter যা গণনার মোড নির্দিষ্ট করে। এটি নিম্নলিখিত মানগুলির মধ্যে যেকোনো একটি নিতে পারে:
- COUNT_NORMAL (default): element বা Property এর সংখ্যা প্রদান করে।
- COUNT_RECURSIVE: Recursively nested arrays বা object এর মধ্যে থাকা সমস্ত element গুলিকে গণনা করে।
count() ফাঙ্কশন কিভাবে কাজ করে?
PHP তে count() ফাংশন কীভাবে কাজ করে তার একটি pseudocode representation এখানে দেওয়া হলো :
function count(data, mode = COUNT_NORMAL) if data is an array if mode is COUNT_NORMAL count = 0 // Initialize a counter for each element in data increment count by 1 end for else if mode is COUNT_RECURSIVE count = 0 // Initialize a counter for each element in data if element is an array increment count by count(element, COUNT_RECURSIVE) else increment count by 1 end if end for end if else if data is an object propertyArray = get_object_vars(data) // Get object properties as an array count = length of propertyArray else count = 0 // Return 0 for non-array and non-object data return count // Return the count of elements or properties end function
এই pseudocode এ :
- ডেটা সেই array বা object এর প্রতিনিধিত্ব করে যার জন্য আপনি elements বা properties গণনা করতে চান।
- mode (optional) মোড নির্দিষ্ট করে এবং COUNT_NORMAL (ডিফল্ট) বা COUNT_RECURSIVE হতে পারে।
ফাংশনটি প্রথমে পরীক্ষা করে যে ডেটাটি একটি array বা একটি object. type এবং counting mode এর উপর নির্ভর করে, এটি elements বা properties গণনা করে। যদি COUNT_RECURSIVE mode ব্যবহার করা হয়, তবে এটি নেস্টেড অ্যারেগুলির মধ্যে সমস্ত element কে recursively গণনা করে। অবশেষে, ফাংশন একটি integer হিসাবে গণনা রিটার্ন করে।
এই pseudocode টি count() ফাংশনের basic logic প্রদর্শন করে, যা পিএইচপি-তে ডেটা স্ট্রাকচারের elements বা properties গণনা করতে ব্যবহৃত হয়।
count() ফাংশনটি কীভাবে ব্যবহার করবেন তার কয়েকটি উদাহরণ নিম্নে দেওয়া হলো :
উদাহরণ ১: Array তে Element গুলো গণনা করা:
<?php $fruits = array("apple", "banana", "cherry"); $count = count($fruits); echo "Number of fruits: " . $count; // Output: Number of fruits: 3
উদাহরণ ২: Object এ Property গুলো গণনা করা:
class MyObject { public $prop1; protected $prop2; private $prop3; } $obj = new MyObject(); $count = count(get_object_vars($obj)); echo "Number of object properties: " . $count; // Output: Number of object properties: 2
উদাহরণ ৩: COUNT_RECURSIVE mode ব্যবহার করে গণনা করা:
$nestedArray = array("a", "b", array("c", "d", array("e", "f"))); $count = count($nestedArray, COUNT_RECURSIVE); // $count will be 8, counting all elements, including those within nested arrays.
উদাহরণ ৪: COUNT_RECURSIVE mode ব্যবহার করে আরো একটি বাস্তব উদাহরণ:
আপনি যদি element গুলোর মোট সংখ্যা নির্ধারণ করতে COUNT_RECURSIVE মোড সহ count() ফাংশন ব্যবহার করে একটি directory এবং এর subdirectories গুলির মধ্যে সমস্ত files এবং ফোল্ডারের নাম স্ক্যান করতে চান এবং গণনা করতে চান তবে আপনি এটি নিম্নরূপ করতে পারেন:
<?php function listDirectoryContents($dir) { $contents = scandir($dir); $result = []; foreach ($contents as $item) { if ($item != "." && $item != "..") { $path = $dir . DIRECTORY_SEPARATOR . $item; if (is_dir($path)) { // Recursively list subdirectory contents $result[$item] = listDirectoryContents($path); } else { $result[] = $item; } } } return $result; } $directoryPath = 'D:\mocks'; // Change to your target directory $directoryContents = listDirectoryContents($directoryPath); print_r(count($directoryContents,COUNT_RECURSIVE)); // Output the resulting directory structure //echo json_encode($directoryContents, JSON_PRETTY_PRINT);