উত্তর:
foreach($array as $key=>$value) {
// do stuff
}
$key
প্রতিটি $array
উপাদান সূচক
$myarr['foo'] = 'bar';
এই পদ্ধতিটি ব্যর্থ হন
vatiable++;
প্রতিটি পুনরাবৃত্তির সাথে এটি বাড়িয়ে নেওয়া ভাল । গতানুগতিক উপায়, কিন্তু সর্বদা কাজ করেছে।
আপনি নিজের মধ্যে একটি হ্যাক রাখতে পারেন foreach
, যেমন প্রতিটি রান-থ্রোতে বাড়ানো ক্ষেত্র, যা for
লুপটি আপনাকে সংখ্যাসূচক-সূচক অ্যারেতে দেয় ঠিক তেমন । এই জাতীয় ক্ষেত্রটি সিউডো-সূচক হবে যা ম্যানুয়াল পরিচালনা (ইনক্রিমেন্টস ইত্যাদি) প্রয়োজন।
এ foreach
আপনাকে আপনার $key
মান আকারে আপনার সূচক দেবে , সুতরাং এই জাতীয় হ্যাকের প্রয়োজন হবে না।
যেমন, এ foreach
$index = 0;
foreach($data as $key=>$val) {
// Use $key as an index, or...
// ... manage the index this way..
echo "Index is $index\n";
$index++;
}
এটি লক্ষ্য করা উচিত যে আপনি key()
বর্তমান কীটি চালু করার জন্য যে কোনও অ্যারেতে কল করতে পারেন । আপনি অনুমান current()
করতে পারেন যে বর্তমান মানটি ফিরে next()
আসবে এবং অ্যারের পয়েন্টারটিকে পরবর্তী উপাদানের দিকে নিয়ে যাবে।
$key
থেকে $key=>$value
যাইহোক, আমি বাজি ধরে বলতে পারি নিম্ন কর্মক্ষমতা অ উল্লেখযোগ্য / একটি সহজ লুপ প্রতক্ষ্য হয়) ...।
আপনি $i
লুপের বাইরে তৈরি করতে এবং লুপের $i++
নীচে করতে পারেন ।
এই দুটি লুপ সমতুল্য (অবশ্যই সুরক্ষার রেলিংয়ে বার করুন):
for ($i=0; $i<count($things); $i++) { ... }
foreach ($things as $i=>$thing) { ... }
যেমন
for ($i=0; $i<count($things); $i++) {
echo "Thing ".$i." is ".$things[$i];
}
foreach ($things as $i=>$thing) {
echo "Thing ".$i." is ".$thing;
}
আমি মনে করি সেরা বিকল্পটি একই রকম:
foreach ($lists as $key=>$value) {
echo $key+1;
}
এটা সহজ এবং সাধারণত
জোনাথন ঠিক আছে। পিএইচপি অ্যারে মানগুলির জন্য মানচিত্রের টেবিল ম্যাপিং কী হিসাবে কাজ করে। আপনার অ্যারে সংজ্ঞায়িত করা থাকলে কিছু ক্ষেত্রে আপনি একটি সূচক পেতে পারেন
$var = array(2,5);
for ($i = 0; $i < count($var); $i++) {
echo $var[$i]."\n";
}
আপনার আউটপুট হবে
2
5
সেক্ষেত্রে অ্যারের প্রতিটি উপাদানগুলির একটি জ্ঞাত সূচক রয়েছে, তবে আপনি যদি নিম্নলিখিতটির মতো কিছু করেন
$var = array_push($var,10);
for ($i = 0; $i < count($var); $i++) {
echo $var[$i]."\n";
}
আপনি কোন আউটপুট পাবেন না। এটি ঘটে কারণ পিএইচপি-তে অ্যারেগুলি লিনিয়ার কাঠামো নয় যেমন তারা বেশিরভাগ ভাষায়। এগুলি হ্যাশ টেবিলগুলির মতো যাতে সমস্ত সঞ্চিত মানগুলির কী থাকতে পারে বা নাও থাকতে পারে। অতএব foreach তাদের উপর ক্রল করতে সূচকগুলি ব্যবহার করে না কারণ অ্যারে সংজ্ঞায়িত করা থাকলে তাদের কেবল সূচি থাকে। আপনার যদি একটি সূচি প্রয়োজন হয়, আপনার অ্যারেগুলি ক্রল করার আগে সম্পূর্ণরূপে সংজ্ঞায়িত হয়েছে তা নিশ্চিত করুন এবং লুপের জন্য একটি ব্যবহার করুন।
$var[] = 10;
(গাইডের পিএইচপি লিঙ্কটি দেখুন), তাই দ্বিতীয় for
লুপটি প্রত্যাশিত ফলাফলকে আউটপুট করে।
সহযোগী অ্যারেগুলির সাথে কাজ করার সময় আমি সাধারণত এটি করি:
foreach ($assoc_array as $key => $value) {
//do something
}
এটি অ-অ্যাসোসিয়েটিভ অ্যারেগুলির সাথেও দুর্দান্ত কাজ করবে। $ কী সূচকের মান হবে। আপনি যদি পছন্দ করেন তবে আপনি এটিও করতে পারেন:
foreach ($array as $indx => $value) {
//do something
}
আমি এটি যুক্ত করতে চাই, আমি এটি কেবলমাত্র আমার টেবিলকে সূচক করতে লারাভেলে ব্যবহার করেছি:
আমার কোড:
@foreach($resultsPerCountry->first()->studies as $result)
<tr>
<td>{{ ++$loop->index}}</td>
</tr>
@endforeach
$loop
পরিবর্তনশীল ব্যবহৃত কারণ এটি সাধারণ পিএইচপি জন্য জিজ্ঞাসা করা হয় হতে পারে না।
আমি এইভাবে সমাধান করেছি, যখন আমাকে পূর্বসূচী সূচক এবং একই প্রসঙ্গে মানটি ব্যবহার করতে হয়েছিল:
$array = array('a', 'b', 'c');
foreach ($array as $letter=>$index) {
echo $letter; //Here $letter content is the actual index
echo $array[$letter]; // echoes the array value
}//foreach
foreach(array_keys($array) as $key) {
// do stuff
}