Practical use of PHP array_values function

array_values function

PHP-তে array_values ফাংশনটি key গুলি বাদ দিয়ে একটি অ্যারের সমস্ত value return দিতে ব্যবহৃত হয়। আপনি এই ফাংশনটি বিভিন্ন পরিস্থিতিতে ব্যবহার করতে পারেন যেখানে আপনি একটি অ্যাসোসিয়েটিভ অ্যারে থেকে কেবলমাত্র value গুলি বের করতে চান, বা যদি আপনি 0 থেকে শুরু করতে একটি numeric array key গুলি পুনরায় সেট করতে চান।

১. Preparing Data for Database Insertion:

যখন আপনার কাছে একটি associative array থাকে যার মধ্যে ডেটা থাকে যা আপনি একটি ডাটাবেসে সন্নিবেশ করতে চান, আপনাকে প্রায়শই SQL queries তৈরি করতে কেবলমাত্র value গুলি বের করতে হবে। এই কাজটি আপনি array_values() ফাঙ্কশন দিয়ে খুব সহজেই করতে পারেন।

<?php

$userData = array(
    "name" => "john doe",
    "email" => "john@example.com",
    "mobile" => "01755886655",
    "address" => "Dhaka,Bangladesh"
);


// Your database connection setup
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "your_database";

// Create a new PDO instance (you can use other database libraries too)
try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // Extract the values from the associative array using array_values
    $values = array_values($userData);

    // Prepare the SQL query
    $sql = "INSERT INTO users (name, email, mobile, address) VALUES (?, ?, ?, ?)";

    // Prepare a PDO statement and execute the query
    $stmt = $conn->prepare($sql);
    $stmt->execute($values);

    echo "User registration successful!";
} catch (PDOException $e) {
    echo "Error: " . $e->getMessage();
}

// Close the database connection
$conn = null;

এই উদাহরণে:

  • আমরা প্রথমে PDO ব্যবহার করে একটি ডাটাবেস কানেকশন স্থাপন করি।
  • আমরা array_values() ব্যবহার করে $userData associative array থেকে value গুলো বের করি।
  • value গুলো insert করার জন্য আমরা placeholder গুলো সহ একটি SQL query prepare করি।
  • আমরা prepare() ফাঙ্কশন ব্যবহার করে একটি PDO statement prepare করি এবং তারপর execute() ফাঙ্কশন ব্যবহার করে এক্সট্র্যাক্ট করা মান সহ query চালাই। SQL injection প্রতিরোধ করার এটি একটি নিরাপদ উপায়।

array_values() ব্যবহার করে, আমরা ডাটাবেস ইনসার্ট করার জন্য ডেটা প্রস্তুত করি , এতে এটি আমাদের SQL query গুলিকে clean এবং সিকিউর রেখে ডাটাবেসে value গুলো সন্নিবেশ করার অনুমতি দেয়। এটি একটি বাস্তব-বিশ্বের দৃশ্যে ডাটাবেস সন্নিবেশের জন্য ডেটা প্রস্তুত করার জন্য array_values() ব্যবহার করার একটি practical এবং Feature rich উদাহরণ।

২.Flattening an Array:

multidimensional array গুলির সাথে কাজ করার সময়, আপনি সেগুলিকে value গুলির একটি single-dimensional array তে করতে চাইতে পারেন। array_values() এই প্রক্রিয়ার একটি অংশ হতে পারে।

<?php 
$multiDimensionalArray = array(
    array("apple", "banana"),
    array("cherry", "date")
);

$flattenedArray = array_values(array_merge(...$multiDimensionalArray));
print_r($flattenedArray);// $flattenedArray will be array("apple", "banana", "cherry", "date");

আসুন একটি ব্যবহারিক উদাহরণ বিবেচনা করি যেখানে আপনার একটি multidimensional array রয়েছে যা categories এবং subcategories গুলির একটি hierarchical structure কে উপস্থাপন করে এবং আপনি এই structure টিকে সমস্ত category নামের একটি single-dimensional array করতে চান। এই উদাহরণে, array_values() ফাঙ্কশনটি multidimensional array থেকে single-dimensional array করার প্রক্রিয়ার অংশ হিসাবে ব্যবহার করা হবে।

ধরে নিচ্ছি আপনার কাছে নিম্নলিখিত multidimensional array এর একটি category রয়েছে:

$categories = array(
    "Electronics" => array(
        "Smartphones" => array("iPhone", "Samsung", "Google Pixel"),
        "Laptops" => array("MacBook", "Dell", "HP")
    ),
    "Clothing" => array(
        "Men's" => array("Shirts", "Pants", "Jackets"),
        "Women's" => array("Dresses", "Skirts", "Blouses")
    ),
    "Books" => array("Fiction", "Non-Fiction")
);

আপনি এই array টিকে single-dimensional array তে রূপান্তর করতে চান যাতে সমস্ত category নাম রয়েছে। আপনি প্রক্রিয়ার অংশ হিসাবে array_values() ব্যবহার করতে পারেন।

এই বাস্তব-বিশ্বের উদাহরণে আপনি কীভাবে array_values() ব্যবহার করতে পারেন তা এখানে:

// Function to flatten a multidimensional array
function flattenArray($array) {
    $result = array();
    foreach ($array as $value) {
        if (is_array($value)) {
            $result = array_merge($result, flattenArray($value));
        } else {
            $result[] = $value;
        }
    }
    return $result;
}

// Flatten the $categories array
$flattenedCategories = flattenArray($categories);

// Use array_values() to re-index the flattened array
$flattenedCategories = array_values($flattenedCategories);

// Output the flattened categories
print_r($flattenedCategories);

এই উদাহরণে:

  • আমরা একটি custom function flattenArray ডিফাইন করি একটি multidimensional array কে recursively single dimension এ রূপান্তর করতে। ফাংশনটি অ্যারের element গুলির মধ্যে ইটারেট করে, একটি element একটি array বা একটি leaf node (non-array) কিনা তা পরীক্ষা করে। যদি এটি একটি array হয়, এটি recursively এটিকে single dimension এ রূপান্তর করে ; যদি এটি একটি leaf node হয়, result এ এটি যুক্ত করে।
  • আমরা $categories array কে single dimension এ রূপান্তর করার জন্য flattenArray ফাংশন ব্যবহার করি, যা একটি single-dimensional array তৈরি করে যার মধ্যে subcategories সহ সমস্ত category এর নাম রয়েছে।
  • আমরা single dimension array টি পুনরায় index করতে array_values() ফাঙ্কশন ব্যবহার করি, যা নিশ্চিত করে যে কীগুলি 0 থেকে শুরু হয় এবং পরপর numeric indexes হয়।
  • সবশেষে, আমরা print_r() ব্যবহার করি category name গুলোর single dimension array এর আউটপুট করতে।

এই উদাহরণটি একটি single-dimensional array তে hierarchical ডেটার multidimensional array কে একটি single-dimensional array করার প্রক্রিয়ার অংশ হিসাবে array_values() এর ব্যবহারিক ব্যবহার প্রদর্শন করে, এটি বিভিন্ন উদ্দেশ্যে আরও অ্যাক্সেসযোগ্য করে তোলে, যেমন সমস্ত category একটি লিস্ট প্রদর্শন করা।

৩. Re-indexing a Numeric Array:

কখনও কখনও আপনার কাছে অগোছালো key সহ একটি numeric array থাকতে পারে এবং আপনি 0 থেকে শুরু করতে key গুলি রিসেট করতে চান৷ array_values() ফাঙ্কশনটি এই পরিস্থিতিতে সাহায্য করতে পারে৷

<?php 
$originalArray = array(5 => "apple", 10 => "banana", 15 => "cherry");

$resetKeysArray = array_values($originalArray);

print_r($resetKeysArray); // $resetKeysArray will have keys 0, 1, 2 and values "apple", "banana", "cherry".

আসুন আরও বৈশিষ্ট্য-সমৃদ্ধ এবং বিস্তৃত বাস্তব উদাহরণ বিবেচনা করি যেখানে আপনার কাছে বইগুলির লিস্ট সম্পর্কে তথ্য সহ একটি numeric array রয়েছে। প্রতিটি বই একটি associative array দ্বারা প্রতিনিধিত্ব করা হয়, এবং আপনি তালিকা প্রদর্শন, বাছাই, বা পরবর্তী প্রসেসের মতো বিভিন্ন অপারেশনের জন্য array_values() ব্যবহার করে 0 থেকে কী গুলি শুরু করতে অ্যারেটিকে re-index করতে চান।

ধরে নিচ্ছি যে আপনার কাছে অগোছালো বা এলোমেলো numeric key গুলো সহ বইগুলির একটি অ্যারে রয়েছে:

$books = array(
    5 => array("title" => "The Great Gatsby", "author" => "F. Scott Fitzgerald", "year" => 1925),
    12 => array("title" => "To Kill a Mockingbird", "author" => "Harper Lee", "year" => 1960),
    8 => array("title" => "1984", "author" => "George Orwell", "year" => 1949)
);

আপনি 0 থেকে শুরু করতে এই array টিকে re-index করতে চান এবং এটি অর্জন করতে array_values() ব্যবহার করতে চান। re-indexing এর পরে, আপনি array তে বিভিন্ন operations সম্পাদন করতে পারেন, যেমন বই গুলোর লিস্ট প্রদর্শন করা, title অনুসারে sorting করা বা একটি নির্দিষ্ট বছর পরে প্রকাশিত বইগুলি সন্ধান করা।

এই বাস্তব উদাহরণে আপনি কীভাবে array_values() ব্যবহার করতে পারেন তা এখানে:

// Re-index the numeric array using array_values
$reindexedBooks = array_values($books);

// Display the list of books
echo "List of Books:\n";
foreach ($reindexedBooks as $key => $book) {
    echo "Book #$key:\n";
    echo "Title: " . $book['title'] . "\n";
    echo "Author: " . $book['author'] . "\n";
    echo "Year: " . $book['year'] . "\n";
    echo "\n";
}

// Sort the array by book title
usort($reindexedBooks, function($a, $b) {
    return strcmp($a['title'], $b['title']);
});

// Display the sorted list of books
echo "List of Books Sorted by Title:\n";
foreach ($reindexedBooks as $key => $book) {
    echo "Book #$key:\n";
    echo "Title: " . $book['title'] . "\n";
    echo "Author: " . $book['author'] . "\n";
    echo "Year: " . $book['year'] . "\n";
    echo "\n";
}

// Find books published after a certain year (e.g., 1950)
$filteredBooks = array_filter($reindexedBooks, function($book) {
    return $book['year'] > 1950;
});

echo "Books Published After 1950:\n";
foreach ($filteredBooks as $key => $book) {
    echo "Book #$key:\n";
    echo "Title: " . $book['title'] . "\n";
    echo "Author: " . $book['author'] . "\n";
    echo "Year: " . $book['year'] . "\n";
    echo "\n";
}

এই উদাহরণে:

  • আমরা array_values() ফাঙ্কশন ব্যবহার করে books কে numeric array তে রূপান্তর করি re-index করতে, 0 থেকে কী গুলি শুরু করে। এটি বিভিন্ন অপারেশনের জন্য অ্যারের সাথে কাজ করা সহজ করে তোলে।
  • আমরা প্রথমে বইয়ের লিস্ট প্রদর্শন করি, তারপর usort() ব্যবহার করে বইয়ের শিরোনাম অনুসারে অ্যারে সাজাই এবং সাজানো লিস্ট প্রদর্শন করি।
  • আমরা একটি নির্দিষ্ট বছর পরে প্রকাশিত বইগুলি খুঁজে পেতে অ্যারেটি ফিল্টার করি (এই ক্ষেত্রে, 1950 এর পরে প্রকাশিত বই) এবং ফিল্টার করা লিস্ট প্রদর্শন করি।

এই উদাহরণটি একটি numeric array কে re-index করতে array_values() এর ব্যবহারিক ব্যবহার প্রদর্শন করে, এটি বিভিন্ন ক্রিয়াকলাপ সম্পাদনের জন্য আরও বহুমুখী করে তোলে, যেমন displaying data, sorting এবং data filtering করা।

উপরোক্ত ব্যবহার গুলো পিএইচপি-তে array_values() ফাংশনের জন্য কয়েকটি ব্যবহারিক ব্যবহার। এটি একটি বহুমুখী ফাংশন যা আপনাকে যখনই original key গুলিকে উপেক্ষা করে একটি অ্যারের value নিয়ে কাজ করতে হবে তখনই সহায়ক৷

আমি মাসুদ আলম, বাংলাদেশের ৩৬ তম 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