পরিচিতি
foreach স্টেটমেন্ট PHP-র অফার করা লুপিং কনস্ট্রাক্টের একটি। অন্যান্য লুপিং স্টেটমেন্ট—while, do while এবং for—কন্ডিশনাল বা কাউন্টেড লুপ তৈরি করতে ব্যবহৃত হয়। অন্যদিকে, foreach লুপ অ্যারে স্ট্রাকচার üzerে ইটারেট করার জন্য খুব সুবিধাজনক।
সিনট্যাক্স
foreach (array_expression as $value)
statement
foreach (array_expression as $key => $value)
statement
foreach-এর প্রথম ফর্ম ইনডেক্সড অ্যারের এলিমেন্টগুলো ওভার ইটারেট করে। প্রতিটি ইটারেশনে $value ভেরিয়েবলটি কারেন্ট এলিমেন্টে সেট হয়। PHP ইন্টারন্যাল পয়েন্টার ট্র্যাক করে রেখে পরবর্তী এলিমেন্টে এডভ্যান্স করে, যতক্ষণ না অ্যারের শেষে পৌঁছায়। প্রতিটি এলিমেন্টের মান foreach স্টেটমেন্টের পরে লুপ বডি দ্বারা প্রসেস হয়।
দ্বিতীয় ফর্ম অ্যাসোসিয়েটিভ অ্যারে ট্রাভার্সালের জন্য উপযুক্ত। প্রতিটি ইটারেশনে কারেন্ট এলিমেন্ট $key এবং $value ভেরিয়েবলে আনপ্যাক হয়। লুপ বডি প্রসেস হওয়ার পর অ্যারে পয়েন্টার পরবর্তী কী-ভ্যালু পেয়ারে এডভ্যান্স করে যতক্ষণ না অ্যারে শেষ হয়।
নিচের উদাহরণে foreach লুপ দিয়ে একটি ইনডেক্সড অ্যারে ট্রাভার্স করা হয়েছে—
উদাহরণ
<?php
$arr = array(2,4,6,8,10);
foreach ($arr as $i){
echo $i . "*2=" . $i*2 . "\n";
}
?>
আউটপুট
এটি নিচের ফলাফল দেবে—
2*2=4 4*2=8 6*2=12 8*2=16 10*2=20
নিচের উদাহরণে foreach লুপ দিয়ে অ্যাসোসিয়েটিভ অ্যারে ট্রাভার্স করা হয়েছে—
উদাহরণ
<?php
$arr = array("Phy"=>50, "Che"=>60, "Maths"=>70, "Bio"=>80);
foreach ($arr as $sub=>$marks){
echo "marks in $sub: " . $marks . "\n";
}
?>
আউটপুট
এটি নিচের ফলাফল দেবে—
marks in Phy: 50 marks in Che: 60 marks in Maths: 70 marks in Bio: 80
একটি টু-ডাইমেনশনাল অ্যারে নেস্টেড foreach লুপ দিয়ে ট্রাভার্স করা হয়—
উদাহরণ
<?php
$arr1=[1,2,3,4,5];
$arr2=[6,7,8,9,10];
$twodim=[$arr1,$arr2];
foreach ($twodim as $row){
foreach ($row as $col){
echo $col . " ";
}
echo "\n";
}
?>
আউটপুট
এটি নিচের ফলাফল দেবে—
1 2 3 4 5 6 7 8 9 10
উদাহরণ
নিচের উদাহরণে অ্যাসোসিয়েটিভ অ্যারে নিয়ে টু-ডাইমেনশনাল অ্যারে ট্রাভার্স করা হয়েছে—
উদাহরণ
<?php
$arr1=["rno"=>1, "name"=>"Kiran", "marks"=>50];
$arr2=["rno"=>2, "name"=>"anil", "marks"=>60];
$arr3=["rno"=>3, "name"=>"Bina", "marks"=>70];
$twodim=[$arr1,$arr2, $arr3];
foreach ($twodim as $row){
foreach ($row as $k=>$v){
echo $k . ":" . $v . " ";
}
echo "\n";
}
?>
আউটপুট
এটি নিচের ফলাফল দেবে—
rno:1 name:Kiran marks:50 rno:2 name:anil marks:60 rno:3 name:Bina marks:70