PHP Professional,Laravel 5.6 Beginning to Advance এবং Zend Certified PHP Engineer (ZCPE ) Course এ সীমিত সংখ্যক আসন বাকি আছে। আগ্রহীদেরকে অতিসত্বর মাসুদ আলম স্যার এর সাথে যোগাযোগ করার জন্য অনুরোধ করা যাচ্ছে। স্যার এর মোবাইল নম্বর : ০১৭২২ ৮১ ৭৫ ৯১

PHP Arrays পর্ব-৪: PHP Array Data Manipulation Functions

PHP Array Data Manipulation Functions

PHP Array Data Manipulation Functions

PHP array তে Data কে বিভিন্ন ভাবে manipulation করতে হয়, আর এই Data Manipulation এর মধ্যে আমাদেরকে array তে নতুন Data ঢুকানো, পুরাতন Data আপডেট অথবা রিমুভ ও করতে হয় , একইভাবে আমাদের কে একটি array এর সাথে আরেকটি array কে Merge এবং Combine ও করতে হয়। আরো করতে হয় বিভিন্ন রকমের filtering। আজকের পর্বে আমরা PHP array এর Data এর বিভিন্ন Manipulation গুলো দেখবো। চলুন এক এক করে সবগুলো দেখা যাক :

PHP array_filter() Function

PHP তে array এর মধ্যের Data গুলোকে প্রোগ্রামার এর দেওয়া callback function এর উপর ভিত্তি করে ফিল্টারিং করার জন্য array_filter function টি ব্যবহৃত হয়। চলুন আমরা একটা নির্দিষ্ট array এর value গুলো থেকে Odd এবং even নম্বর গুলোকে array_filter function দিয়ে filtering করে নেই।

<?php
function odd($var)
{
    // returns whether the input integer is odd
    return $var % 2==1;
}

function even($var)
{
    // returns whether the input integer is even
    return $var % 2==0;
}

$array = range(1,20);

echo "<pre>";
echo "Odd :";
print_r(array_filter($array, "odd"));
echo "Even:";
print_r(array_filter($array, "even"));
echo "</pre>";
?>

Output:

Odd :Array
(
    [0] => 1
    [2] => 3
    [4] => 5
    [6] => 7
    [8] => 9
    [10] => 11
    [12] => 13
    [14] => 15
    [16] => 17
    [18] => 19
)
Even:Array
(
    [1] => 2
    [3] => 4
    [5] => 6
    [7] => 8
    [9] => 10
    [11] => 12
    [13] => 14
    [15] => 16
    [17] => 18
    [19] => 20
)

লক্ষ্য করুন , এখানে আমরা 1-20 দিয়ে তৈরী array টি কে দুটি callback function odd এবং even ফাঙ্কশন দিয়ে যথাক্রমে Odd Number গুলো এবং Even Number গুলো filtering করি।

সাধারণত, বাই ডিফল্ট array_filter function টি শুধু array এর value কে নিয়ে কাজ করে তবে আপনি চাইলে শুধু key অথবা key এবং value দুটিকে নিয়েই কাজ করতে পারেন। আর এর জন্য আপনাকে ARRAY_FILTER_USE_KEY এবং ARRAY_FILTER_USE_BOTH দুটি built-in constant ব্যবহার করতে হবে। চলুন একটি উদাহরণ দিয়ে বুঝে নেয়া যাক :

<?php
function filterByKey($k){
	return ($k=="b" || $k=="e");
}

function filterByBoth($v,$k){
	return ($k=="b" || $v=="Canada");
}

$array=["a"=>"America","b"=>"Bangladesh","c"=>"Canada","d"=>"Denmark","e"=>"England"];

echo "<pre>";
echo "Filtering By Key :";
print_r(array_filter($array, "filterByKey",ARRAY_FILTER_USE_KEY));

echo "Filtering By Both :";
print_r(array_filter($array, "filterByBoth",ARRAY_FILTER_USE_BOTH));

?>

Output

Filtering By Key :Array
(
    [b] => Bangladesh
    [e] => England
)
Filtering By Both :Array
(
    [b] => Bangladesh
     => Canada
)

PHP array_map() Function

PHP তে এক বা একাধিক array এর মধ্যের প্রত্যেকটি Data বা element কে প্রোগ্রামার এর দেওয়া callback function এর উপর ভিত্তি করে যেকোনো operation করার জন্য array_map function টি ব্যবহৃত হয়। চলুন একটা উদাহরণ দিয়ে বুঝে নেয়া যাক ।

<?php
function cube($n)
{
    return($n * $n * $n);
}

$a = array(1, 2, 3, 4, 5);
$b = array_map("cube", $a);
print_r($b);
?>

Result:

Array
(
    [0] => 1
    [1] => 8
    [2] => 27
    [3] => 64
    [4] => 125
)

একই ভাবে array_map function এ একাধিক array নিয়েও কাজ করতে পারি। নিচের উদাহরণ দেখুন

<?php
function show_Spanish($n, $m)
{
    return("The number $n is called $m in Spanish");
}

$a = array(1, 2, 3, 4, 5);
$b = array("uno", "dos", "tres", "cuatro", "cinco");

echo "<pre>";
echo "Array Mapping :";
$c = array_map("show_Spanish", $a, $b);
print_r($c);


?>

Output

Array Mapping :Array
(
    [0] => The number 1 is called uno in Spanish
    [1] => The number 2 is called dos in Spanish
    [2] => The number 3 is called tres in Spanish
    [3] => The number 4 is called cuatro in Spanish
    [4] => The number 5 is called cinco in Spanish
)

PHP array_walk() Function

Array এর প্রত্যেকটি Member এর উপর user এর বা প্রোগ্রামারের দেওয়া callback function ব্যবহার করার জন্য PHP তে array_walk() ফাঙ্কশনটি ব্যবহৃত হয়। array_walk() ফাঙ্কশন array এর মধ্যের value গুলোকে user define callback function এর প্রথম Parameter হিসেবে পাস করে , আর key গুলোকে দ্বিতীয় Parameter হিসেবে পাস করে। চলুন একটা উদাহরণ দিয়ে ব্যাপারটা আরো ভালোভাবে বুঝে নেয়া যাক :

<?php
function arrayValues($value,$key)
{
    echo $value,"<br>";
}

function arrayKeys($value,$key)
{
    echo $key,"<br>";
}

function arrayKeyVal($value,$key)
{
    echo "$key=$value","<br>";
}

$array=["a"=>"America","b"=>"Bangladesh","c"=>"Canada","d"=>"Denmark","e"=>"England"];

echo "<strong>Get Array Values with array_walk Function :</strong><br>";
array_walk($array, "arrayValues");
echo "<br><br>";

echo "<strong>Get Array Keys with array_walk Function :</strong><br>";
array_walk($array, "arrayKeys");
echo "<br><br>";

echo "<strong>Get Array Key and Values with array_walk Function :</strong><br>";
array_walk($array, "arrayKeyVal");
?>

Output

Get Array Values with array_walk Function :
America
Bangladesh
Canada
Denmark
England


Get Array Keys with array_walk Function :
a
b
c
d
e


Get Array Key and Values with array_walk Function :
a=America
b=Bangladesh
c=Canada
d=Denmark
e=England

লক্ষ্য করুন, উপরে আমরা array_walk function টির জন্য তিনটা ফাঙ্কশন তৈরী করি , তারমধ্যে arrayValues ফাঙ্কশনের কাজ হচ্ছে array এর value গুলোকে string হিসেবে print করবে এবং arrayKeys ফাঙ্কশনের কাজ হচ্ছে array থেকে শুধু key গুলোকে print করবে, সর্বেশেষ arrayKeyVal ফাঙ্কশনের কাজ হচ্ছে array key এবং value উভয়ই print করবে।

array_walk_recursive Function

Nested array_walk_recursive ফাঙ্কশন টি array_walk ফাঙ্কশনের মতোই Array এর প্রত্যেকটি Member এর উপর user এর বা প্রোগ্রামারের দেওয়া callback function ব্যবহার করার জন্য ব্যবহৃত হয়, তবে সেটি single array এর পরিবর্তে Nested array এর উপর কাজ করে। এটিও Nested array এর মধ্যের value গুলোকে user define callback function এর প্রথম Parameter হিসেবে পাস করে , আর key গুলোকে দ্বিতীয় Parameter হিসেবে পাস করে। চলুন একটা উদাহরণ দিয়ে ব্যাপারটা আরো ভালোভাবে বুঝে নেয়া যাক :

<?php
$fruits = ['sweet' => ['a' => 'apple', 'b' => 'banana'], 'sour' => 'lemon'];

function test_print($item, $key)
{
    echo "$key holds $item \n";
}
echo "<pre>";
array_walk_recursive($fruits, 'test_print');
echo "</pre>";
?>

Output

a holds apple
b holds banana
sour holds lemon

array_reduce() Function

PHP তে array এর সব গুলো element কে callback ফাঙ্কশনের মাধ্যমে একটা single Value তে রূপান্তর করার জন্য PHP তে array_reduce function টি ব্যবহৃত হয়। এক্ষেত্রে callback function টি তে দুটি Parameter দিতে হয়, তারমধ্যে প্রথমটি carry হিসেবে ব্যবহৃত হয় এবং দ্বিতীয়টি array এর প্রত্যেকটি item গ্রহণ করার জন্য ব্যবহৃত হয়। চলুন একটা উদাহরণ দেখা যাক :

<?php
function sum($carry, $item)
{
    $carry += $item;
    return $carry;
}

function product($carry, $item)
{
    $carry *= $item;
    return $carry;
}

$a = array(1, 2, 3, 4, 5);
$x = array();
echo "<pre>";
var_dump(array_reduce($a, "sum")); // int(15)
var_dump(array_reduce($a, "product", 10)); // int(1200), because: 10*1*2*3*4*5
var_dump(array_reduce($x, "sum", "No data to reduce")); // string(17) "No data to reduce"
echo "</pre>";
?>

Output

int(15)
int(1200)
string(17) "No data to reduce"

array_chunk() Function

একটি নির্দিষ্ট array কে একাধিক array তে বিভক্ত করার জন্য PHP তে array_chunk() function টি ব্যবহৃত হয়। array_chunk() ফাঙ্কশনে প্রথম Parameter টি থাকে যেই array টি একাধিক array বিভক্ত হবে সেটি receive করবে , দ্বিতীয় array টি ব্যবহৃত হবে array টি কতটি খন্ডে বিভক্ত হবে সেটির জন্য , আর তৃতীয় parameter টি ব্যবহৃত হয় খন্ডে খন্ডে বিভক্ত array গুলোতে আগের key থাকবে কিনা তা নির্ধারণের জন্য , আগের index রাখার জন্য আপনাকে তৃতীয় Parameter টি true করে দিতে হবে। বাই ডিফল্ট তৃতীয় Parameter টি false থাকে। চলুন একটা উদাহরণ দিয়ে বিষয়টা বুঝে নেয়া যাক :

<?php
$input_array = array('a', 'b', 'c', 'd', 'e');
print_r(array_chunk($input_array, 2));
print_r(array_chunk($input_array, 2, true));
?>

Output

Array
(
    [0] => Array
        (
            [0] => a
            [1] => b
        )

    [1] => Array
        (
            [0] => c
            [1] => d
        )

    [2] => Array
        (
            [0] => e
        )

)
Array
(
    [0] => Array
        (
            [0] => a
            [1] => b
        )

    [1] => Array
        (
            [2] => c
            [3] => d
        )

    [2] => Array
        (
            [4] => e
        )

)

লক্ষ্য করুন, প্রথম array_chunk টিতে তৃতীয় parameter টি true না দেওয়ায় নতুন array গুলোর প্রত্যেকটির পূর্বের key এর পরিবর্তে নতুন key assign হয়েছে। আর দ্বিতীয় array_chunk() ফাঙ্কশনে তৃতীয় Parameter true দেওয়ায়, প্রতিটি নতুন array এর key তে তাদের আগের key গুলোই রয়েছে।

array_slice() Function

একটি নির্দিষ্ট array এর একটা নির্দিষ্ট অংশ কেটে নিয়ে নতুন array তৈরী করার জন্য PHP তে array_slice() function টি ব্যবহৃত হয়। array_slice() ফাঙ্কশনে চারটি Parameter ব্যবহৃত হয়, প্রথমটি ব্যবহৃত হয় যেই array কে slice করবেন সেটার জন্য , দ্বিতীয় Parameter টি Offset অর্থাৎ কোথায় থেকে slice শুরু হবে তার জন্য , তৃতীয় Parameter slicing করা array এর length এর জন্য, অর্থাৎ পূর্বের array এর কত গুলো value নিয়ে নতুন array তৈরী হবে তার জন্য । আর সর্বশেষ Parameter টি ব্যবহৃত হয় আগের key থাকবে কিনা তার জন্য, বাই ডিফল্ট false থাকে। চলুন একটা উদাহরণ দিয়ে আরো ভালো ভাবে বুঝে নেয়া যাক :

<?php
$input = array("a", "b", "c", "d", "e");

$output = array_slice($input, 2);      // returns "c", "d", and "e"
$output = array_slice($input, -2, 1);  // returns "d"
$output = array_slice($input, 0, 3);   // returns "a", "b", and "c"

// note the differences in the array keys
print_r(array_slice($input, 2, -1));
print_r(array_slice($input, 2, -1, true));
?>

Output


Array
(
    [0] => c
    [1] => d
)
Array
(
    [2] => c
    [3] => d
)

array_column() Functions

Nested Array এর মধ্যের array গুলোর একটি নির্দিষ্ট column এর বিপরীতে সব গুলো value কে print করার জন্য PHP তে array_column() ফাঙ্কশন টি ব্যবহৃত হয়। চলুন একটি উদাহরণ দিয়ে বুঝে নেয়া যাক :

<?php
// Array representing a possible record set returned from a database
$records = array(
    array(
        'id' => 2135,
        'first_name' => 'John',
        'last_name' => 'Doe',
    ),
    array(
        'id' => 3245,
        'first_name' => 'Sally',
        'last_name' => 'Smith',
    ),
    array(
        'id' => 5342,
        'first_name' => 'Jane',
        'last_name' => 'Jones',
    ),
    array(
        'id' => 5623,
        'first_name' => 'Peter',
        'last_name' => 'Doe',
    )
);
 
$first_names = array_column($records, 'first_name');
print_r($first_names);
?>

Output

Array
(
    [0] => John
    [1] => Sally
    [2] => Jane
    [3] => Peter
)

আপনি চাইলে তৃতীয় আরেকটি Parameter ব্যবহার করতে পারেন। সে ক্ষেত্রে দ্বিতীয় প্যারামিটার টি তে যেই column name দিবেন সেটির value গুলো আপনার নতুন তৈরী array এর value হিসেবে print হবে। আর তৃতীয় Parameter টি তে যেই column name দিবেন সেটির value গুলো আপনার নতুন তৈরী array এর key হিসেবে print হবে। চলুন একটি উদাহরণ দিয়ে বুঝে নেয়া যাক :

<?php
// Array representing a possible record set returned from a database
$records = array(
    array(
        'id' => 2135,
        'first_name' => 'John',
        'last_name' => 'Doe',
    ),
    array(
        'id' => 3245,
        'first_name' => 'Sally',
        'last_name' => 'Smith',
    ),
    array(
        'id' => 5342,
        'first_name' => 'Jane',
        'last_name' => 'Jones',
    ),
    array(
        'id' => 5623,
        'first_name' => 'Peter',
        'last_name' => 'Doe',
    )
);
$last_names = array_column($records, 'last_name', 'id');
echo "<pre>";
print_r($last_names);
echo "</pre>";
?>

Output

Array
(
    [2135] => Doe
    [3245] => Smith
    [5342] => Jones
    [5623] => Doe
)

লক্ষ্য করুন, এখানে দ্বিতীয় Parameter টি নতুন তৈরী array এর value হিসেবে print হয়েছে , এবং তৃতীয় Parameter টি নতুন তৈরী array এর key হিসেবে print হয়েছে।

array_combine() Functions

দুটি array এর মধ্যে একটিকে key হিসেবে এবং অন্যটিকে value হিসেবে combine করে নতুন array তৈরী করার জন্য PHP তে array_combine() function টি ব্যবহৃত হয়। চলুন একটা উদাহরণ দেখা যাক :

<?php
$a = array('green', 'red', 'yellow');
$b = array('avocado', 'apple', 'banana');
$c = array_combine($a, $b);
echo "<pre>";
print_r($c);
echo "</pre>";
?>

Output

Array
(
    [green] => avocado
    [red] => apple
    [yellow] => banana
)

array_merge() Function

দুই বা ততোধিক array কে একটি array তে Merge করার জন্য PHP তে array_merge() function টি ব্যবহৃত হয়। চলুন একটা উদাহরণ দেখা যাক :

<?php
$array1 = array("a","b","c","d");
$array2 = array("e","f","g","h");
$result = array_merge($array1, $array2);
echo "<pre>";
print_r($result);
echo "</pre>";
?>

Output

Array
(
    [0] => a
    [1] => b
    [2] => c
    [3] => d
    [4] => e
    [5] => f
    [6] => g
    [7] => h
)

উল্লেখ্য , যদি Merge করা দুটি array তেই একই string index থাকে, সেক্ষেত্রে দুটি array এর মধ্যে প্রথম array এর একই string index এর value টি overwrite হয়ে হয়ে যাবে। নিচের উদাহরণ লক্ষ্য করুন :

<?php
$array1 = array("a"=>"America","b","c","d");
$array2 = array("a"=>"England","f","g","h");
$result = array_merge($array1, $array2);
echo "<pre>";
print_r($result);
echo "</pre>";
?>

Output

Array
(
    [a] => England
    [0] => b
    [1] => c
    [2] => d
    [3] => f
    [4] => g
    [5] => h
)

লক্ষ্য করুন , এখানে প্রথম array এর ভ্যালু ‘America’ Overwrite হয়ে গেছে।

array_merge_recursive() Function

দুটি Nested Array কে Merge করে নতুন একটি array তৈরী করার জন্য PHP তে array_merge_recursive() function টি ব্যবহৃত হয়। নিচের উদাহরণটি দেখুন :

<?php
$ar1 = array("color" => array("favorite" => "red"), 5);
$ar2 = array(10, "color" => array("favorite" => "green", "blue"));
$result = array_merge_recursive($ar1, $ar2);
print_r($result);
?>

Output:

Array
(
    [color] => Array
        (
            [favorite] => Array
                (
                    [0] => red
                    [1] => green
                )

            [0] => blue
        )

    [0] => 5
    [1] => 10
)

array_push() function

PHP তে কোনো একটা array এর শেষে এক বা একাধিক value (ঢুকানোর) পুশ করার জন্য array_push() function টি ব্যবহৃত হয়। চলুন উদাহরণ দেখা যাক :

<?php
$stack = array("orange", "banana");
array_push($stack, "apple", "raspberry");
print_r($stack);
?>

Output

Array
(
    [0] => orange
    [1] => banana
    [2] => apple
    [3] => raspberry
)

array_pop() function

PHP তে কোনো একটা array এর শেষ থেকে একটি value বের করে দেওয়ার array_pop() function টি ব্যবহৃত হয়। চলুন উদাহরণ দেখা যাক :

<?php
$stack = array("orange", "banana", "apple", "raspberry");
$fruit = array_pop($stack);
print_r($stack);
?>

Output

Array
(
    [0] => orange
    [1] => banana
    [2] => apple
)

array_unshift() function

PHP তে কোনো একটা array এর শুরুতে এক বা একাধিক value ঢুকানোর জন্য array_unshift() function টি ব্যবহৃত হয়। চলুন উদাহরণ দেখা যাক :

<?php
$queue = array("orange", "banana");
array_unshift($queue, "apple", "raspberry");
print_r($queue);
?>

Output

Array
(
    [0] => apple
    [1] => raspberry
    [2] => orange
    [3] => banana
)

array_shift() function

PHP তে কোনো একটা array এর শুরুতে একটি value বের করে দেওয়ার array_shift() function টি ব্যবহৃত হয়। চলুন উদাহরণ দেখা যাক :

<?php
$stack = array("orange", "banana", "apple", "raspberry");
$fruit = array_shift($stack);
print_r($stack);
?>

Output

Array
(
    [0] => banana
    [1] => apple
    [2] => raspberry
)

array_splice() function

Array এর মধ্যে এক বা একাধিক element add, replace এবং remove এই ধরণের কাজগুলো করার জন্য PHP তে array_splice() ফাঙ্কশনটি ব্যবহৃত হয়। চলুন কয়েকটি উদাহরণ দিয়ে বুজে নেয়া যাক :

<?php
$input = array("red", "green", "blue", "yellow");
array_splice($input, 2);
// $input is now array("red", "green")

$input = array("red", "green", "blue", "yellow");
array_splice($input, 1, -1);
// $input is now array("red", "yellow")

$input = array("red", "green", "blue", "yellow");
array_splice($input, 1, count($input), "orange");
// $input is now array("red", "orange")

$input = array("red", "green", "blue", "yellow");
array_splice($input, -1, 1, array("black", "maroon"));
// $input is now array("red", "green",
//          "blue", "black", "maroon")

$input = array("red", "green", "blue", "yellow");
array_splice($input, 3, 0, "purple");
// $input is now array("red", "green",
//          "blue", "purple", "yellow");
?>

এই ক্যাটাগরির অন্যান্য পোস্ট:

Masud Alam
আমি মাসুদ আলম, বাংলাদেশের ৩৬ তম Zend Certified Engineer । ২০০৯ সালে কম্পিউটার সাইন্স থেকে বেচেলর ডিগ্রী অর্জন করি। দীর্ঘ ৮ বছর আমি Winux Soft, SSL Wireless, IBCS-PRIMAX, Max Group, Canadian International Development Agency (CIDA), Care Bangladesh, World Vision, Hellen Keller সহ বিভিন্ন দেশি বিদেশী কোম্পানিতে ওয়েব ডেভেলপমেন্ট এবং সফটওয়্যার ডেভেলপমেন্ট এর উপর বিভিন্ন লিডিং পজিশন এ চাকরি এবং প্রজেক্ট লিড করি। বিশেষ ভাবে বাংলাদেশের ১০০ জন জেন্ড সার্টিফাইড ইঞ্জিনিয়ার এর মধ্যে ৫২ জন ই আমার হাতে জেন্ড সার্টিফাইড হয়েছে। বর্তমানে TechBeeo Software Company তে সিইও হিসাবে আছি । পাশাপাশি w3programmers ট্রেনিং ইনস্টিটিউট এ PHP এর উপর Professional এবং Advance Zend Certified PHP -7 Engineering কোর্স করাই। আর w3programmers.com সাইট টি আমার।

Leave a Reply

Your email address will not be published. Required fields are marked *