PHP Array General Functions Part-1: foreach, list, extract and compact functions

PHP Array General Functions Part-1

PHP array এর ফাঙ্কশন গুলোকে আমরা কয়েকটি ভাগে ভাগ করব। আজকে আমরা আলোচনা করব PHP Array General Function গুলো নিয়ে প্রথম পর্ব। আজকের পর্বে আমরা foreach, list, extract and compact functions এর বিস্তারিত আলোচনা করব।

PHP তে foreach কি?

PHP-তে foreach একটি language construct . যা array এবং object এর উপর iterating করার জন্য ব্যবহৃত হয়। এটি আপনাকে একটি অ্যারের elements বা একটি object এর property এর value গুলি বের করার জন্য লুপ করতে দেয়। PHP foreach() function এর মাধ্যমে আমরা খুব সহজেই array এর key এবং value এছাড়া Object এর property এবং তার valueu গুলোকে print করতে পারি, চলুন প্রথমে foreach() function এর syntax দেখা যাক :

Syntax-1

foreach (array_expression as $value){
    statement
}

উপরের Syntax অনুযায়ী আপনি শুধু array এর value গুলোকে Print করতে পারবেন। চলুন উদাহরণ দিয়ে বুঝে নেয়া যাক :

<?php
$array=["a"=>"America","b"=>"Bangladesh","c"=>"Canada","e"=>"England"];
foreach($array as $value){
    echo $value,"\n";
    }
?>

Output

America
Bangladesh
Canada
England

Syntax-2

foreach (array_expression as $key => $value){
    statement
}

উপরের Syntax অনুযায়ী আপনি array এর key এবং value উভয়ই Print করতে পারবেন। চলুন উদাহরণ দিয়ে বুঝে নেয়া যাক :

<?php
$array=["a"=>"America","b"=>"Bangladesh","c"=>"Canada","e"=>"England"];
foreach($array as $key=>$value){
    echo $key."=".$value,"\n";
    }

Output

a=America
b=Bangladesh
c=Canada
e=England

Syntax-3

foreach (array_expression as $key => $value):
    statement
endforeach;

উপরের Syntax অনুযায়ী আপনি array এর key এবং value উভয়ই Print করতে পারবেন। চলুন উদাহরণ দিয়ে বুঝে নেয়া যাক :

<?php
$array=["a"=>"America","b"=>"Bangladesh","c"=>"Canada","e"=>"England"];
foreach($array as $key=>$value):
    echo $key."=".$value,"\n";
    endforeach;

Output

a=America
b=Bangladesh
c=Canada
e=England

Zend Certified PHP Engineering (ZCPE) Course

আমি কোথায় পিএইচপি foreach ফাংশন ব্যবহার করতে পারি?

এখানে কিছু সাধারণ সিনারিও রয়েছে যেখানে আপনি PHP-তে foreach লুপ ব্যবহার করতে পারেন:

১. Iterating Over an Indexed Array:

আপনি একটি indexed array এর element গুলির মধ্যে লুপ করতে এবং প্রতিটি উপাদানে অ্যাকশন গুলো সম্পাদন করতে foreach ব্যবহার করতে পারেন:

$colors = ["red", "green", "blue"];

foreach ($colors as $color) {
    echo $color . "<br>";
}

২. Iterating Over an Associative Array:

associative array গুলির সাথে কাজ করার সময়, আপনি key-value pairs এর মাধ্যমে লুপ করতে foreach ব্যবহার করতে পারেন:

$person = ["name" => "John", "age" => 30, "city" => "New York"];

foreach ($person as $key => $value) {
    echo "$key: $value <br>";
}

৩. Iterating Over Objects::

আপনি একটি object এর property এবং value গুলো iterate করতে foreach ব্যবহার করতে পারেন:

class Person {
    public $name = "John";
    public $age = 30;
    public $city = "New York";
}

$person = new Person();

foreach ($person as $property => $value) {
    echo "$property: $value <br>";
}

৪. Iterating Over Multidimensional Arrays:

foreach দিয়ে আপনি multidimensional array গুলোর element গুলির মাধ্যমে iterate করতে ব্যবহার করা যেতে পারে:

$students = [
    ["name" => "Alice", "grade" => 85],
    ["name" => "Bob", "grade" => 92],
    ["name" => "Charlie", "grade" => 78]
];

foreach ($students as $student) {
    echo "Name: " . $student["name"] . ", Grade: " . $student["grade"] . "<br>";
}

৫.Iterating Over an Iterable Object:

PHP 7 এ Traversable interface implements করে যেকোন object এর সাথে foreach ব্যবহার করার ক্ষমতা চালু করেছে, আপনাকে আপনার object গুলোর জন্য custom iteration behavior ডিফাইন করার অনুমতি দেয়।

class ProductCollection implements \IteratorAggregate {
    private $products = [];

    public function addProduct($productId, $productName, $quantity) {
        $this->products[$productId] = [
            'name' => $productName,
            'quantity' => $quantity,
        ];
    }

    public function getIterator() {
        return new ArrayIterator($this->products);
    }
}

// Usage
$productCollection = new ProductCollection();
$productCollection->addProduct(1, 'Widget A', 100);
$productCollection->addProduct(2, 'Widget B', 50);
$productCollection->addProduct(3, 'Widget C', 75);

// Iterate over the products in the collection
foreach ($productCollection as $productId => $productInfo) {
    echo "Product ID: $productId, Name: {$productInfo['name']}, Quantity: {$productInfo['quantity']}<br>";
}

৬. Modifying Array Elements:

প্রয়োজন হলে foreach আপনি reference ব্যবহার করে সরাসরি অ্যারের elements গুলি মডিফাই করতে পারেন :

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

foreach ($numbers as &$number) {
    $number *= 2;
}

print_r($numbers);

// $numbers will now be [2, 4, 6, 8]

PHP তে list কি?

পিএইচপি-তে list() ফাংশনটি array এর value গুলোকে নিজের পছন্দ মতো variable এ value নির্ধারণের জন্য ব্যবহৃত হয়। এটি একটি array থেকে element গুলি বের করার এবং কোডের একটি একক লাইনে পৃথক ভেরিয়েবলগুলিতে বরাদ্দ করার একটি সুবিধাজনক উপায়। list() construct শুধুমাত্র indexed array গুলির সাথে কাজ করে এবং অ্যারের মধ্যে তাদের অর্ডারের উপর ভিত্তি করে values নির্ধারণ করে।

এখানে list() construct এর basic syntax রয়েছে:

list($var1, $var2, ...) = $array;
  • $var1, $var2, ইত্যাদি: এইগুলি হল ভেরিয়েবল যেখানে আপনি অ্যারে থেকে মান assign করতে চান।
  • $array: এটি হল indexed array যেখান থেকে আপনি মান বের করতে চান।

কিভাবে list() function ব্যবহার করা যেতে পারে তার একটি সহজ উদাহরণ এখানে দেওয়া হলো :

$fruits = ["apple", "banana", "cherry"];

list($firstFruit, $secondFruit, $thirdFruit) = $fruits;

echo "First fruit: $firstFruit, Second fruit: $secondFruit, Third fruit: $thirdFruit";

এই উদাহরণে, তালিকা() construct $fruits array থেকে যথাক্রমে $firstFruit, $secondFruit এবং $thirdFruit ভেরিয়েবলে “apple”, “banana” এবং “cherry” মান এসাইন করে।

তবে list() ব্যবহার করার সময় আমাদেরকে নিম্নলিখিত পয়েন্টগুলি মনে রাখতে হবে :

  • ১. list() construct এর বাম দিকের ভেরিয়েবলের সংখ্যা অ্যারের element গুলির সংখ্যার সাথে যেন মেলে। যদি তারা না মেলে, তাহলে array এর অতিরিক্ত value গুলো ignore অর্থাৎ উপেক্ষা করা হবে, এবং অনুপস্থিত value গুলির জন্য null এসাইন করা হবে।
  • ২. আপনি associative array গুলির সাথে list() construct ব্যবহার করতে পারেন, তবে এটি array এর ক্রম অনুসারে value গুলো এসাইন করে, এক্ষেত্রে key গুলোর কোনো ভুমিকা বা ব্যবহার নাই । যদি array টি associative হয়, তবে এটি প্রায়শই key-ভিত্তিক অ্যাক্সেস ব্যবহার করার জন্য আরও উপযুক্ত।
  • ৩. list() construct প্রায়শই array থেকে দ্রুত value গুলো extract অর্থাৎ বের করার জন্য ব্যবহার করা হয়, বিশেষ করে database query results এর সাথে কাজ করার মতো পরিস্থিতিতে, যেখানে আপনি ভেরিয়েবলে column গুলো এসাইন করতে চান।
  • ৪. PHP 7.1 থেকে শুরু করে, আপনি কোডটিকে আরও সংক্ষিপ্ত করে একই ফলাফল পেতে list() এর জায়গায় square brackets [] ব্যবহার করতে পারেন। উদাহরণ স্বরূপ:
    [$var1, $var2, ...] = $array;
    

PHP তে extract() ফাংশন কি?

PHP-তে extract() ফাংশনটি একটি associative array এর key গুলিকে variable এ রূপান্তর করতে ব্যবহৃত হয়। এটি ভেরিয়েবলের নাম হিসাবে associative array এর key এবং তাদের সংশ্লিষ্ট value গুলি variable এর value হিসাবে নেয়। এটি একটি array থেকে ডেটা নিয়ে কাজ করার একটি সুবিধাজনক উপায় হতে পারে, বিশেষ করে যখন form data, configuration settings, বা অন্য কোনও পরিস্থিতি যেখানে আপনি অ্যারে element গুলিকে পৃথক ভেরিয়েবলে রূপান্তর করতে চান তার সাথে কাজ করার সময়।

এখানে extract() ফাংশনের মৌলিক সিনট্যাক্স দেওয়া হলো :

extract($array, $extract_type, $prefix);
  • $array: এটি হল associative array যেখান থেকে আপনি variable extract করতে চান।
  • $extract_type (optional):এটি নির্দিষ্ট করে কিভাবে variable extract করা হবে। এটি নিম্নলিখিতগুলির মধ্যে যেকোনো একটি হতে পারে:
    • EXTR_OVERWRITE (default):আপনি যেই পেজে array টি extract করবেন ,সেই পেজে extract কৃত array key এর নামের সাথে একই নামে যদি কোনো variable থাকে , তাহলে বিদ্যমান ভেরিয়েবল ওভাররাইট করা হবে।
    • EXTR_SKIP: আপনি যেই পেজে array টি extract করবেন ,সেই পেজে extract কৃত array key এর নামের সাথে একই নামে যদি কোনো variable থাকে , একই নামের বিদ্যমান ভেরিয়েবলগুলিকে ওভাররাইট করা হবে না, অর্থাৎ উক্ত array key টি ভ্যারিয়েবল এ রূপান্তর হবে না।
    • EXTR_PREFIX_SAME: আপনি যেই পেজে array টি extract করবেন ,সেই পেজে extract কৃত array key এর নামের সাথে একই নামে যদি কোনো variable থাকে , একই নামের বিদ্যমান ভেরিয়েবলগুলিকে একটি prefix দেওয়া হবে।
    • EXTR_PREFIX_ALL:সমস্ত ভেরিয়েবলের একটি prefix দেওয়া হবে।
    • EXTR_PREFIX_INVALID: যেই array টি কে extract করবেন , সেটি যদি একটি mixed array অর্থ key গুলো string এবং number দিয়ে mixed হয়। সেক্ষেত্রে শুধুমাত্র অবৈধ/number key গুলোকে ভেরিয়েবলে রূপান্তরের জন্য একটি prefix দেওয়া হবে।
  • $prefix (optional): যদি $extract_type prefixing নির্দিষ্ট করে, এই প্যারামিটারটি prefix string টি কি হবে , সেটি প্রদান করে।

এখানে extract() কীভাবে ব্যবহার করবেন তার একটি উদাহরণ দেওয়া হলো:

$data = [
    "name" => "John",
    "age" => 30,
    "city" => "New York"
];

extract($data);

echo "Name: $name, Age: $age, City: $city";

এই উদাহরণে, extract() ফাংশন অ্যাসোসিয়েটিভ অ্যারে $data-এর কীগুলির উপর ভিত্তি করে পৃথক ভেরিয়েবল $name, $age, এবং $city তৈরি করে। extracted ভেরিয়েবলগুলি এখন আপনি চাইলে নিয়মিত ভেরিয়েবল হিসাবে ব্যবহার করতে পারেন।

PHP-তে compact() ফাংশন কি?

PHP-তে, compact() function ব্যবহার করে আপনি পেজে অবস্থিত variable name এর লিস্ট থেকে একটি array তৈরি করতে পারেন। যেখানে ভেরিয়েবলের নামগুলি key হিসাবে কাজ করবে এবং তাদের মানগুলি সংশ্লিষ্ট ভেরিয়েবল থেকে নেওয়া হবে। প্রতিটি key-value জোড়াকে স্পষ্টভাবে ডিফাইন না করে দ্রুত একটি associative array তৈরি করার এটি একটি সুবিধাজনক উপায়।

এখানে compact() ফাংশনের বেসিক সিনট্যাক্স দেওয়া হলো :

compact(var_name1, var_name2, ...);
  • এখানে var_name1, var_name2, ইত্যাদি: এইগুলি হল ভেরিয়েবলের নাম যা আপনি resulting array তে অন্তর্ভুক্ত করতে চান।

উদাহরণস্বরূপ, নিম্নলিখিত পিএইচপি কোড দেখুন :

$firstname = "John";
$lastname = "Doe";
$age = 30;

$data = compact('firstname', 'lastname', 'age');
print_r($data);

compact() function ভেরিয়েবলের নামকে key এবং তাদের সংশ্লিষ্ট মানগুলি দিয়ে একটি array $data তৈরি করবে:

Result:

Array
(
    [firstname] => John
    [lastname] => Doe
    [age] => 30
)

এটা মনে রাখা অপরিহার্য যে আপনি compact() এ যে variable names গুলি পাস করবেন তা single quotes দিয়ে আবদ্ধ হওয়া উচিত এবং সেগুলি current scope এ বিদ্যমান ভেরিয়েবল হওয়া উচিত। compact() এ প্রদত্ত একটি variable name বিদ্যমান না থাকলে, এটি অ্যারের ফলাফলে অন্তর্ভুক্ত হবে না।

আবার আপনি চাইলে সব গুলো variable এর নামকে একটা array হিসেবে পাঠাতে পারেন :

<?php
$city  = "San Francisco";
$state = "CA";
$event = "SIGGRAPH";
$location_vars = array("city", "state","event");
$result = compact($location_vars);
echo "<pre>";
print_r($result);
echo "</pre>";
?>

Result

Array
(
    [city] => San Francisco
    [state] => CA
    [event] => SIGGRAPH
)

আবার আপনি চাইলে কিছু variable এর নামকে একটা array হিসেবে পাঠাতে পারেন এবং কিছু variable আলাদা ভাবে দিতে পারেন :

<?php
$city  = "San Francisco";
$state = "CA";
$event = "SIGGRAPH";

$location_vars = array("city", "state");

$result = compact("event", $location_vars);
echo "<pre>";
print_r($result);
echo "</pre>";
?>

Result

Array
(
    [city] => San Francisco
    [state] => CA
    [event] => SIGGRAPH
)

আমি মাসুদ আলম, বাংলাদেশের ৩৬ তম Zend Certified Engineer । ২০০৯ সালে কম্পিউটার সাইন্স থেকে বেচেলর ডিগ্রী অর্জন করি। দীর্ঘ ১৫ বছর আমি Winux Soft, SSL Wireless, IBCS-PRIMAX, Max Group, Canadian International Development Agency (CIDA), Care Bangladesh, World Vision, Hellen Keller, Amarbebsha Ltd সহ বিভিন্ন দেশি বিদেশী কোম্পানিতে ডেটা সাইন্স, মেশিন লার্নিং, বিগ ডেটা, ওয়েব ডেভেলপমেন্ট এবং সফটওয়্যার ডেভেলপমেন্ট এর উপর বিভিন্ন লিডিং পজিশন এ চাকরি এবং প্রজেক্ট লিড করি। এছাড়াও বাংলাদেশের ১৮৫ জন জেন্ড সার্টিফাইড ইঞ্জিনিয়ার এর মধ্যে ১২০ এরও অধিক ছাত্র আমার হাতে জেন্ড সার্টিফাইড ইঞ্জিনিয়ার হয়েছেন। বর্তমানে w3programmers ট্রেনিং ইনস্টিটিউট এ PHP এর উপর Professional এবং Advance Zend Certified PHP -8.2 Engineering, Laravel Mastering Course with ReactJS, Python Beginning To Advance with Blockchain, Machine Learning and Data Science, Professional WordPress Plugin Development Beginning to Advance কোর্স করাই। আর অবসর সময়ে w3programmers.com এ ওয়েব টেকনোলজি নিয়ে লেখালেখি করি।

Leave a Reply