PHP Arrays
PHP Arrays পর্ব-২ : PHP Array General Functions
প্রিয় পাঠক, PHP Array দ্বিতীয় পর্বে আপনাদেরকে আবারো স্বাগতম, এই পর্বে আমরা PHP array এর কিছু General function নিয়ে বিস্তারিত আলোচনা করব। চলুন দেখা যাক :
PHP array এর মধ্যের মান (Value) গুলো প্রিন্ট করার জন্য কত গুলো উপায় আছে?
PHP array এর মধ্যের মান (Value) গুলো প্রিন্ট করার জন্য অনেক গুলো উপায় আছে চলুন একটা একটা করে দেখা যাক:
foreach() function এর মাধ্যমে:
PHP foreach() function এর মাধ্যমে আমরা খুব সহজেই array এর key এবং value গুলোকে print করতে পারি, চলুন প্রথমে foreach() function এর syntax দেখা যাক :
Syntax-1
foreach (array_expression as $value){ statement }
উপরের Syntax অনুযায়ী আপনি শুধু array এর value গুলোকে Print করতে পারবেন। চলুন উদাহরণ দিয়ে বুঝে নেয়া যাক :
<?php <?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
while loop এ list() function এবং each() function ব্যবহার করার মাধ্যমে
Note:PHP list ফাঙ্কশনের কাজ হচ্ছে array এর প্রত্যেকটি value কে variable এ assign করা।
Note:PHP each ফাঙ্কশনের কাজ হচ্ছে array এর current key এবং value রিটার্ন করা ।
<?php $student=["name"=>"Nahid bin Azhar","age"=>34,"address"=>"Dhaka,Bangladesh"]; while (list($key, $value) = each($student)) { echo "$key : $value \n"; }
Result:
name : Nahid bin Azhar age : 34 address : Dhaka,Bangladesh
Associative Array কে extract function এর মাধ্যমে:
<?php $student=["name"=>"Nahid bin Azhar","age"=>34,"address"=>"Dhaka,Bangladesh"]; extract($student); echo "Name: $name, Age: $age, Address: $address";
Result:
Name: Nahid bin Azhar, Age: 34, Address: Dhaka,Bangladesh
Numerical Array তে extract() function এর সাথে prefix ব্যবহার করার মাধ্যমে :
<?php $student=["Nahid bin Azhar",34,"Dhaka,Bangladesh"]; extract($student,EXTR_PREFIX_ALL,"a"); echo "Name: $a_0, Age: $a_1, Address: $a_2";
Result:
Name: Nahid bin Azhar, Age: 34, Address: Dhaka,Bangladesh
PHP foreach() function দিয়ে কি Nested Array প্রিন্ট করা যাবে?
অবশ্যই যাবে, চলুন কয়েকটি technique দেখে নেয়া যাক :
Technique-১: Nested foreach ব্যবহার করার মাধ্যমে :
<?php $students=[ ["name"=>"Mamnun Bin Masud","age"=>4], ["name"=>"Muhibbullah Bin Masud", "age"=>3], ["name"=>"Taha Alam","age"=>3.5] ]; foreach($students as $singleArray){ foreach($singleArray as $key=>$value){ echo "$key : $value \n"; } }
Output
name : Mamnun Bin Masud age : 4 name : Muhibbullah Bin Masud age : 3 name : Taha Alam age : 3.5
উপরের উদাহরণে আমরা Nested Array এর জন্য Nested foreach loop ব্যবহার করেছি।
Technique-২: Associative Nested Array তে extract() function ব্যবহার করার মাধ্যমে :
Note:extract() function এর কাজ হচ্ছে associative array এর key গুলোকে variable এ রূপান্তর করে।
<?php $students=[ ["name"=>"Mamnun Bin Masud","age"=>4], ["name"=>"Muhibbullah Bin Masud", "age"=>3], ["name"=>"Taha Alam","age"=>3.5] ]; foreach($students as $singleArray){ extract($singleArray); echo "Name: $name, Age: $age \n"; }
Output
Name: Mamnun Bin Masud, Age: 4 Name: Muhibbullah Bin Masud, Age: 3 Name: Taha Alam, Age: 3.5
Technique-৩: Numerical Nested Array তে extract() function এর সাথে prefix ব্যবহার করার মাধ্যমে :
<?php $students=[ ["Mamnun Bin Masud",4], ["Muhibbullah Bin Masud",3], ["Taha Alam",3.5] ]; foreach($students as $singleArray){ extract($singleArray,EXTR_PREFIX_ALL,"a"); echo "Name: $a_0, Age: $a_1 \n"; }
Output
Name: Mamnun Bin Masud, Age: 4 Name: Muhibbullah Bin Masud, Age: 3 Name: Taha Alam, Age: 3.5
Technique-৪: foreach function এর মধ্যে list function ব্যবহার করার মাধ্যমে।
<?php $students=[ ["Mamnun Bin Masud",4], ["Muhibbullah Bin Masud",3], ["Taha Alam",3.5] ]; foreach ($students as list($name, $age)) { // $a contains the first element of the nested array, // and $b contains the second element. echo "Name: $name, Age: $age\n"; }
Output:
তবে এই পদ্ধতি শুধু numerical Nested Array এর জন্য প্রযোজ্য হবে, Associative Nested Array এর জন্য কাজ করবেনা।
Name: Mamnun Bin Masud, Age: 4 Name: Muhibbullah Bin Masud, Age: 3 Name: Taha Alam, Age: 3.5
PHP count(), reset(), end(), current(), key(), next()এবং prev()
তা ছাড়া নিচের Technique দিয়েও আপনি যেকোনো array কে iterate করতে পারবেন। আর এর জন্য আপনাকে PHP array এর count(), reset(), end(), current(), key(), next(), prev() ফাঙ্কশন গুলো ব্যবহার করতে হবে। চলুন উদাহরণ দিয়ে বুঝে নেয়া যাক।
<?php $input = array("o"=>"oranges", "a"=>"apples", "p"=>"pears","m"=>"Mango","b"=>"Banana"); reset($input); for($i=0;$i<count($input);$i++){ echo key($input)."=".current($input),"\n"; next($input); } echo "=================================\n"; end($input); for($i=count($input);$i>0;$i--){ echo key($input)."=".current($input),"\n"; prev($input); }
Result
o=oranges a=apples p=pears m=Mango b=Banana ================================= b=Banana m=Mango p=pears a=apples o=oranges
উল্লেখ্য, উপরের উদাহরণে count()টির কাজ হচ্ছে array total element কতটি তা count করা, reset() টির কাজ হচ্ছে array টিকে reset করা অর্থাৎ array pointer কে শুরুতে নিয়ে যাওয়া। current() টির কাজ হচ্ছে array এর current value রাখা। key() টির কাজ হচ্ছে array এর current key রাখা। next() টির কাজ হচ্ছে array এর pointer কে একধাপ পরের ভ্যালু কে value তে point করা এবং prev() টির কাজ হচ্ছে array এর pointer কে একধাপ আগের value তে point করা
PHP Array count() function
PHP Array তে total element সংখ্যা কত তা জানার জন্য count() function ব্যবহার করা হয়। চলুন উদাহরণ দিয়ে বুঝা যাক :
<?php $arr = array("a"=>'coffee', 'brown', 'caffeine',5,3.4,true); #Result: 6 echo count($arr);
PHP Nested Array এর element কিভাবে count করব?
PHP Nested Array তে total element সংখ্যা কত তা জানার জন্য count() function ই ব্যবহার করতে হয়, তবে count এর দ্বিতীয় parameter কে true করে দিতে হয় অথবা COUNT_RECURSIVE এই Built in constant টি দিতে হয় । চলুন উদাহরণ দিয়ে বুঝা যাক :
<?php $students=[ ["name"=>"Mamnun Bin Masud","age"=>4], ["name"=>"Muhibbullah Bin Masud", "age"=>3], ["name"=>"Taha Alam","age"=>3.5] ]; #Result: 9 echo count($students,1); echo "\n"; #Result: 9 echo count($students,true); echo "\n"; #Result: 9 echo count($students,COUNT_RECURSIVE);
PHP array array_count_values() function
PHP array এর মধ্যে কোন value টি কতবার আছে তা জানার জন্য আপনি array_count_values() function টি ব্যবহার করতে পারেন। নিচের উদাহরণটি দেখুন :
<?php $arr = array(1,3,2,1,5,6,1,2,3); print_r(array_count_values($arr));
Result:
Array ( [1] => 3 [3] => 2 [2] => 2 [5] => 1 [6] => 1 )
PHP array_keys() এবং array_values() function
php তে কোনো array এর শুধু column name গুলোকে নিয়ে আলাদা array করতে চাইলে আপনাকে array_keys এবং শুধু value গুলোকে নিয়ে আলাদা array করতে চাইলে আপনাকে array_values function টি ব্যবহার করতে হবে। চলুন উদাহরণ দিয়ে বুঝে নেয়া যাক :
<?php $student= ["name"=>"Mamnun Bin Masud","age"=>4,"mobile"=>"01766882299"]; echo "Print Only Array Keys\n"; print_r(array_keys($student)); echo "\n"; echo "Print Only Array Values\n"; print_r(array_values($student));
Output
Print Only Array Keys Array ( [0] => name [1] => age [2] => mobile ) Print Only Array Values Array ( [0] => Mamnun Bin Masud [1] => 4 [2] => 01766882299 )
PHP array_sum() এবং array_product() function
php তে কোনো array এর সব গুলো value এর যোগফল বের করতে চাইলে আপনাকে array_sum() function এবং array এর সব গুলো value এর গুনফল বের করতে চাইলে আপনাকে array_product() function টি ব্যবহার করতে হবে। চলুন উদাহরণ দিয়ে বুঝে নেয়া যাক :
<?php $arr = array(1,2,3,4,5,6); echo "Summation of all Array Element: "; print_r(array_sum($arr)); echo "\n"; echo "Multiplication of all array Element: "; print_r(array_product($arr));
Output
Summation of all Array Element: 21 Multiplication of all array Element: 720
PHP array_flip() এবং array_reverse() function
php তে কোনো array এর key গুলোকে value তে রূপান্তর অথবা value গুলোকে key তে রূপান্তর করতে চাইলে আপনাকে array_flip() function এবং array এর সব গুলো value কে বিপরীত দিক থেকে সাজাতে চাইলে আপনাকে array_reverse() function টি ব্যবহার করতে হবে। চলুন উদাহরণ দিয়ে বুঝে নেয়া যাক :
<?php $input = array("oranges", "apples", "pears"); echo "Exmple of array_flip() Function\n"; $flipped = array_flip($input); print_r($flipped); echo "Exmple of array_reverse() Function\n"; $reversed = array_reverse($input); print_r($reversed); ?>
Output
Exmple of array_flip() Function Array ( [oranges] => 0 [apples] => 1 [pears] => 2 ) Exmple of array_reverse() Function Array ( [0] => pears [1] => apples [2] => oranges )
তবে array তে একই value যদি একাধিক বার থাকে , সেক্ষেত্রে শুধু শেষ value টি key হিসেবে থাকবে , অন্য গুলো replace হয়ে যাবে। চলুন উদাহরণ দিয়ে বুঝে নেয়া যাক :
<?php $input = array("a" => 1, "b" => 1, "c" => 2); $flipped = array_flip($input); print_r($flipped); ?>
Array ( [1] => b [2] => c )
PHP array_rand () এবং shuffle() function
php তে কোনো array এর value গুলো থেকে এক বা একাধিক value কে (এলো-মেলো করে ) randomly পিক (বের) করতে চাইলে আপনাকে array_rand() function এবং array এর সব গুলো value কে এলো-মেলো (shuffling) করতে চাইলে আপনাকে shuffle() function টি ব্যবহার করতে হবে। চলুন উদাহরণ দিয়ে বুঝে নেয়া যাক :
<?php $input = array("oranges", "apples", "pears","Mango","Banana"); echo "Exmple of array_rand() Function\n"; $randomly_pick = array_rand($input,2); echo $randomly_pick[0],"\n",$randomly_pick[1],"\n"; echo "Exmple of shuffle() Function\n"; shuffle($input); print_r($input);
Possible results
Exmple of array_rand() Function 1 4 Exmple of shuffle() Function Array ( [0] => pears [1] => oranges [2] => Mango [3] => apples [4] => Banana )
PHP array_key_exists() এবং in_array() function
php তে array এর মধ্যে কোনো নির্দিষ্ট value আছে কিনা তা চেক করতে চাইলে আপনাকে in_array() function এবং array এর মধ্যে কোনো key আছে কিনা তা চেক করতে চাইলে আপনাকে array_key_exists() function টি ব্যবহার করতে হবে। চলুন উদাহরণ দিয়ে বুঝে নেয়া যাক :
<?php $fruits= ["a"=>"Apple","b"=>"Banana","c"=>"Cadbury"]; echo in_array("Apple",$fruits)?"Yes, Apple is available":"Not Available"; echo "\n"; echo array_key_exists("b",$fruits)?"Yes, b key is available":"Not Available";
Result:
Yes, Apple is available Yes, b key is available
উল্লেখ্য, in_array() function এর তৃতীয় Parameter যদি true দেওয়া হয়, তাহলে letter case সহ চেক করবে।
PHP extract() এবং compact function
PHP তে array এর key গুলোকে variable এ রূপান্তর করার জন্য extract() function ব্যবহৃত হয়, আবার PHP Page এর মধ্যে অবস্থিত Variable গুলোকে array element এ রূপান্তর করার জন্য compact() function ব্যবহৃত হয়। চলুন প্রথমে compact() function এর ব্যবহার দেখা যাক :
<?php $city = "San Francisco"; $state = "CA"; $event = "SIGGRAPH"; $result = compact("city", "state", "event"); echo "<pre>"; print_r($result); echo "</pre>"; ?>
Result
Array ( [city] => San Francisco [state] => CA [event] => SIGGRAPH )
আবার আপনি চাইলে সব গুলো 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 )
এবার চলুন extract() function এর ব্যবহার দেখা যাক
<?php $input = array("o"=>"oranges", "a"=>"apples", "p"=>"pears","m"=>"Mango","b"=>"Banana"); extract($input); echo $o,"\n"; echo $a,"\n"; echo $p,"\n"; echo $m,"\n"; echo $b,"\n";
Result
oranges apples pears Mango Banana
আপনি যদি যেকোনো numerical array কে extract করতে চান সেক্ষেত্রে আপনাকে Extra একটা Prefix (EXTR_PREFIX_ALL) যোগ করে দিতে হবে, ঠিক নিচের মত।
<?php $input = array("oranges", "apples", "pears","Mango","Banana"); extract($input,EXTR_PREFIX_ALL,"a"); echo $a_0,"\n"; echo $a_1,"\n"; echo $a_2,"\n"; echo $a_3,"\n"; echo $a_4,"\n";
Result
oranges apples pears Mango Banana
আবার যদি Page এ already আছে এমন কোনো variable কে replace হওয়া থেকে বিরত রাখতে চান সেক্ষেত্রেও আপনাকে Extra একটা Prefix যোগ করে দিতে হবে, ঠিক নিচের মত।
<?php $event = "Wedding"; $locations = array("city"=>"San Francisco", "state"=>"CA","event"=>"Birthday Party"); extract($locations,EXTR_PREFIX_SAME,"a"); echo "City: ".$city; echo "<br>"; echo "State: ".$state; echo "<br>"; echo "Event in Array: ".$a_event; echo "<br>"; echo "Event in Page: ".$event; ?>
Result
City: San Francisco State: CA Event in Array: Birthday Party Event in Page: Wedding
PHP range() এবং array_unique function
PHP তে Number অথবা letter দিয়ে নির্দিষ্ট range এর array তৈরী করার জন্য আপনাকে range() function এবং একটি array এর মধ্যে অবস্থিত value গুলোর মধ্যে unique value নিয়ে নতুন array তৈরী করার জন্য array_unique() function ব্যবহার করতে হবে। যেমন:
<?php $numbers=range(5,10); echo "Ascending Order: \n"; print_r($numbers); echo "\n"; echo "Descending Order: \n"; $numbers2=range(10,5); print_r($numbers2); $letters=range("a","f"); echo "Ascending Order: \n"; print_r($letters); echo "\n"; echo "Descending Order: \n"; $letters2=range("f","a"); print_r($letters2);
Result
Ascending Order: Array ( [0] => 5 [1] => 6 [2] => 7 [3] => 8 [4] => 9 [5] => 10 ) Descending Order: Array ( [0] => 10 [1] => 9 [2] => 8 [3] => 7 [4] => 6 [5] => 5 ) Ascending Order: Array ( [0] => a [1] => b [2] => c [3] => d [4] => e [5] => f ) Descending Order: Array ( [0] => f [1] => e [2] => d [3] => c [4] => b [5] => a )
array_unique() function example
<?php $arr=[1,3,2,4,1,2,5]; $unique=array_unique($arr); print_r($unique);
Result
Array ( [0] => 1 [1] => 3 [2] => 2 [3] => 4 [6] => 5 )