PHP ကိုနေ့စဉ်အစီအစဉ်ရေးဆွဲရာတွင် developer များကပြ a နာတစ်ခုနှင့်ကြုံတွေ့ရနိုင်သော်လည်း foreach ၏နောက်ဆုံး element ကိုရရှိရန် အဆုံး () ကို အသုံးပြုရန်ကြိုးစားသော်လည်းရလဒ်မှာမျှော်လင့်ထားသည့်အတိုင်းမဟုတ်ပါ။ ဤမေးခွန်းသည်ရိုးရှင်းသည်ဟုထင်ရသော်လည်း PHP ၏အခြေခံအမူအကျင့်ဆိုင်ရာနားလည်မှုကိုအခြေခံသည်။ ဤဆောင်းပါးသည်ဤဖြစ်စဉ်ကိုနက်နက်နဲနဲလေ့လာရန်သင့်အားဤအချက်ကိုဆန်းစစ်ရန်,
ကုဒ်အပိုင်းအစတစ်ခုကိုအရင်ကြည့်ကြစို့။
$data = ['a', 'b', 'c', 'd'];
foreach ($data as $key => $value) {
echo "လက်ရှိတန်ဖိုး: $value\n";
echo "နောက်ဆုံး element က: " . end($data) . "\n";
}
output ကိုအောက်ပါအတိုင်းသင်မျှော်လင့်နိုင်သည် -
လက်ရှိတန်ဖိုး: a
နောက်ဆုံး element က: d
လက်ရှိတန်ဖိုး: b
နောက်ဆုံး element က: d
...
သို့သော်အမှန်မှာ, သင်သည်တစ်ခါတစ်ရံတွင်ဤကိစ္စမဟုတ်ကြောင်းသင်တွေ့လိမ့်မည်။ သင် End () နှင့်သော့ () နှင့် သော့ () ကိုသုံးလျှင်ပင်၎င်းကိုကွင်းဆက်တွင်ပေါင်းစပ်ရန်သင် element d ကို မရရှိနိုင်ပါ, သို့သော်အခြားတန်ဖိုးများကိုသင်မရနိုင်ပါ။ ဒါကအဓိကမေးခွန်းတစ်ခုပေါ်လာတယ်။
PHP မှ အဆုံး () function သည် array ၏ "နောက်ဆုံးတန်ဖိုး" ကိုတိုက်ရိုက်မယူပါ။ ၎င်း၏ function ကို:
Array ၏အတွင်းပိုင်းညွှန်ကြားချက်ကိုနောက်ဆုံး element သို့ပြောင်းပြီးထို element ၏တန်ဖိုးကိုပြန်ပို့သည်။
ဤဝါကျ၏အဓိကအချက်သည် " pointer ကိုရွေ့လျားနေသည် " ဖြစ်သည်။ PHP array အတွင်းရှိ "pointer" ကို PHP array အတွင်း၌ထိန်းသိမ်းထားပြီးသင်၏ () , Prev (), reset () , reset () , အဆုံး () သည် ဤ pointer ၏အနေအထားကိုအကျိုးသက်ရောက်လိမ့်မည်။ တနည်းအားဖြင့်, အဆုံး () အဆုံး () ဘေးထွက်ဆိုးကျိုးရှိပါတယ်။
foreach သည် PHP ၏ဘာသာစကားဖွဲ့စည်းပုံဖြစ်သည်။ ၎င်းသည် internal pointer ကိုမသုံးပါနှင့်။ ဆိုလိုသည်မှာ
သင် Fonteach ကို $ ဒေတာများအပေါ် ကျော်ကြားစေရန်သင်အသုံးပြုသည်။ PHP သည်နောက်ခံတွင်မိတ္တူသို့မဟုတ်လျှပ်တစ်ပြက်ပြုလုပ်လိမ့်မည်။
fonteach တွင် အဆုံး () ကို အသုံးပြုသောကြောင့် Fonteach ၏ကြားဖြတ်အပြုအမူကိုအကျိုးသက်ရောက်မည်မဟုတ်ပါ။
သို့သော်သင်သည် Enteach ကိုအသုံးပြုပါက () fonteach တွင်မူရင်းခင်းကျင်းမှု၏အတွင်းပိုင်းညွှန်ပြမှုကိုပြောင်းလဲလိမ့်မည်။
ဤ "ထောက်ပြသူများသည်တစ် ဦး နှင့်တစ် ဦး 0 င ်ရောက်စွက်ဖက်ခြင်းမပြုပါနှင့် " fonteach () နှင့် လက်ရှိ လုပ်ဆောင်မှုများကဲ့သို့သောမကိုက်ညီသောသို့မဟုတ်ယုတ္တိမမှုသို့မဟုတ်ယုတ္တိရှိသည့်အမှားများကိုဖြစ်ပေါ်စေလိမ့်မည်။
အောက်ပါကုဒ်သည်ရှုပ်ထွေးသောဇာတ်ညွှန်းကိုပြသသည်။
$urls = [
'http://m66.net/page1',
'http://m66.net/page2',
'http://m66.net/page3',
];
foreach ($urls as $url) {
if ($url === end($urls)) {
echo "ဤသည်နောက်ဆုံးစာမျက်နှာဖြစ်ပါတယ်: $url\n";
} else {
echo "လုပ်ကိုင်ခြင်း: $url\n";
}
}
ဒီကုဒ်ကအဲဒါဟာနောက်ဆုံး URL ဟုတ်မဟုတ်မပြောတတ်ဘူးလို့သင်ထင်ကောင်းထင်လိမ့်မည်။ တကယ်တော့ဒါဟာမြင့်မားတဲ့ဖြစ်နိုင်ခြေမြင့်မားတဲ့ဖြစ်နိုင်ခြေမြင့်မားတဲ့ဖြစ်နိုင်ခြေတစ်ခုမှာ ပထမတစ်ခုမှာ "နောက်ဆုံးတစ်ခု" ဖြစ်ပြီး အဆုံး () သည် array point ကိုနောက်ဆုံးဒြပ်စင်တစ်ခုသို့ပြောင်းရွှေ့ လိမ့် မည်ဟုအမြဲတမ်းဆုံးဖြတ်လိမ့်မည်။
fonteach တွင်နောက်ဆုံးဒြပ်စင်ဟုတ်မဟုတ်ဆုံးဖြတ်ရန်အကြံပြုလိုသောနည်းလမ်းများရှိသည် -
$count = count($urls);
for ($i = 0; $i < $count; $i++) {
$url = $urls[$i];
if ($i === $count - 1) {
echo "ဤသည်နောက်ဆုံးစာမျက်နှာဖြစ်ပါတယ်: $url\n";
} else {
echo "လုပ်ကိုင်ခြင်း: $url\n";
}
}
$last = end($urls);
reset($urls); // သငျသညျနောက်ပိုင်းတွင်ရှောက်သွားကြဖို့ရှိသည်ဆိုပါက
foreach ($urls as $url) {
if ($url === $last) {
echo "ဤသည်နောက်ဆုံးစာမျက်နှာဖြစ်ပါတယ်: $url\n";
} else {
echo "လုပ်ကိုင်ခြင်း: $url\n";
}
}
ဤနည်းလမ်းသည်အဆင်ပြေသော်လည်းသတိထားပါ။ Array တွင်တန်ဖိုးများရှိပါက၎င်းသည် urls နှစ်ခုအတူတူပင်ဖြစ်သကဲ့သို့မှားယွင်းစွာဖြစ်နိုင်သည် ။
end($urls);
$lastKey = key($urls);
reset($urls);
foreach ($urls as $key => $url) {
if ($key === $lastKey) {
echo "နောက်ဆုံး item: $url\n";
} else {
echo "လုပ်ကိုင်ခြင်း: $url\n";
}
}
၎င်းသည်ဆက်နွယ်သောနည်းလမ်းတစ်ခုဖြစ်သည်။
PHP ၏ Array Pointer ယန္တရားနှင့် fonteach uneach ယန္တရားကိုခွဲခြားထားသည့်အဘယ်ကြောင့်ဆိုသော် foreach loop တွင် အဆုံး () ကို အသုံးပြုခြင်းသည်အလုပ်မလုပ်ပါ။ ယင်းကိုနားလည်ခြင်းသည်သင့်အားဖြစ်နိုင်ချေရှိသောအမှားများနှင့်ယုတ္တိအမှားအမှားများကိုရှောင်ရှားရန်ကူညီနိုင်သည်။
ယေဘုယျအားဖြင့် အဆုံး () သည်ဘေးထွက်ဆိုးကျိုးများရှိသော function တစ်ခုဖြစ်သည် ။ သင်နောက်ဆုံး element ကိုဆုံးဖြတ်ရန်လိုအပ်သည့်အခါရေတွက်ခြင်း, ယာယီ variable များသို့မဟုတ်အဓိကနှိုင်းယှဉ်ခြင်းစသည့်ပိုမိုယုံကြည်စိတ်ချရသောနည်းလမ်းများကိုသင်အသုံးပြုသင့်သည်။
ဤဆောင်းပါးသည် Php ၏ဤ "အံ့ဖွယ်" အပြုအမူကိုပိုမိုနားလည်ရန်ဤဆောင်းပါးသည်သင့်အားပိုမိုကောင်းမွန်သောနားလည်မှုကိုပိုမိုနားလည်ရန်ကူညီနိုင်သည်ဟုကျွန်ုပ်မျှော်လင့်ပါသည်။