Daily Php Development တွင် Array Search စစ်ဆင်ရေးများသည်အများအားဖြင့်တန်ဖိုးရှိမှုတစ်ခုတွင်တည်ရှိခြင်းရှိမရှိဆုံးဖြတ်ခြင်းသို့မဟုတ်အချို့သောဒြပ်စင်များ၌အချို့သောဒြပ်စင်များရှာဖွေခြင်းကိုဆုံးဖြတ်ခြင်းကဲ့သို့သောအခြေအနေများဖြစ်သည်။ in_array () သည်အလွန်အလိုလိုသိ။ အသုံးပြုရလွယ်ကူသောလုပ်ဆောင်မှုဖြစ်သော်လည်းစွမ်းဆောင်ရည်သည်ပြ a နာတစ်ခုဖြစ်လာမည့်အခါသို့မဟုတ်မကြာခဏရှာဖွေမှုမြင်ကွင်းကိုရင်ဆိုင်နေရသည့်အခါပြ a နာတစ်ခုဖြစ်လာနိုင်သည်။
ဤဆောင်းပါးသည် array_flip () နှင့် in_array () ကို ပေါင်းစပ်ခြင်းဖြင့်ပိုမိုထိရောက်သောခင်းကျင်းရှာဖွေရေးနည်းလမ်းများအောင်မြင်ရန်မည်သို့အောင်မြင်ရမည်ကိုမိတ်ဆက်ပေးလိမ့်မည်။
In_array () သည် PHP တွင်အသုံးပြုသော function တစ်ခုဖြစ်ပြီးတန်ဖိုးတစ်ခုတွင်တန်ဖိုးတစ်ခုရှိ, ၎င်း၏ syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -
in_array($needle, $haystack, $strict = false)
ဤလုပ်ဆောင်မှု၏နောက်ခံအလွှာသည် linear search ဖြစ်သည်။ ဆိုလိုသည်မှာ၎င်းသည် array တစ်ခုရှိ element များကိုတစ်ခုနှင့်တစ်ခုနှိုင်းယှဉ်နိုင်သည်။ သေးငယ်တဲ့ array များအတွက်, ဒီပြ a နာမဟုတ်ပါဘူး။ သို့သော်ထောင်ပေါင်းများစွာသို့မဟုတ်ထိုထက်မကသောဒြပ်စင်များရှိပါကရှာဖွေရေးလုပ်ငန်းများသည်အလွန်မကြာခဏဖြစ်သော်လည်း၎င်း၏စွမ်းဆောင်ရည်သည်အတားအဆီးဖြစ်လိမ့်မည်။
နမူနာကုဒ်:
$values = range(1, 100000);
if (in_array(99999, $values)) {
echo "ရှာဖေှ!";
}
အထက်ပါကုဒ်ကိုကွပ်မျက်လိုက်သောအခါရှာဖွေမှုတစ်ခုစီသည်ခင်းကျင်းမှုတစ်ခုလုံးကိုဖြတ်သန်းသွားလိမ့်မည်။ အဆိုးဆုံးတွင်၎င်းသည်ဒြပ်စင် 100000 လုံးကိုဖြတ်သန်းသွားလိမ့်မည်။
Array_flip () ၏ function သည်ခင်းကျင်းမှု၏သော့နှင့်တန်ဖိုးများကိုလဲလှယ်ရန်ဖြစ်သည်။ ၎င်း၏အချိန်ရှုပ်ထွေးမှုမှာအို (n) ဖြစ်သည်။ သို့သော်တန်ဖိုးများကိုရှာဖွေခြင်း၏ရှုပ်ထွေးမှုသည်အို (1) ဖြစ်လာနိုင်သည်။
ဥပမာ -
$values = range(1, 100000);
$flipped = array_flip($values);
if (isset($flipped[99999])) {
echo "ရှာဖေှ!";
}
အထက်ပါကုဒ်တွင် array_flip () တန်ဖိုးသည်တန်ဖိုးကိုသော့တစ်ခုသို့ပြောင်းလဲသည်။ PHP တွင် Hash Table ၏အဓိကရှာဖွေမှုသည်အလွန်မြန်ဆန်ပြီးနီးကပ်လာသည်။ ထို့ကြောင့် array_flip () flaship () ကိုစတင်ခြင်းရှိသော်လည်းစွမ်းဆောင်ရည်တိုးတက်မှုသည်မကြာခဏရှာဖွေမှုအခြေအနေများတွင်ကြီးမားသည်။
ပိုမို. လက်တွေ့ကျသောဇာတ်လမ်းတစ်ပုဒ်ကိုတုပကြပါစို့။ ဥပမာအားဖြင့်အသုံးပြုသူများအစုမှတင်သွင်းသော IDs များသည်စနစ်၏ခွင့်ပြုထားသော ID Whitelist တွင်ရှိနေသည်ကိုသင်စစ်ဆေးရန်လိုအပ်သည်။
$allowed_ids = [101, 205, 309, 402, 588, 999]; // မိန်းမဖြူပညာရှင်
$submitted_ids = [205, 402, 777]; // အသုံးပြုသူတင်သွင်း ID
// နည်းလမ်း 1:ရိုးရာနည်းလမ်း,အသုံးပြု in_array
foreach ($submitted_ids as $id) {
if (!in_array($id, $allowed_ids)) {
echo "ID {$id} 不在မိန်းမဖြူပညာရှင်中,စစ်ဆင်ရေးငြင်းပယ်ခံရ。" . PHP_EOL;
}
}
// နည်းလမ်း 2:Optimization နည်းလမ်း,အသုံးပြု array_flip
$allowed_map = array_flip($allowed_ids);
foreach ($submitted_ids as $id) {
if (!isset($allowed_map[$id])) {
echo "ID {$id} 不在မိန်းမဖြူပညာရှင်中,စစ်ဆင်ရေးငြင်းပယ်ခံရ。" . PHP_EOL;
}
}
Whitelists ခွင့်ပြုသူ အရေအတွက်သည်ကြီးမားလာသောအခါနည်းလမ်းနှစ်ခုသည်နည်းလမ်းတစ်ခုထက်သိသိသာသာပိုမိုမြန်ဆန်လိမ့်မည်။
Array_Flip () သည် ခင်းကျင်းမှု၏တန်ဖိုးသည်ထူးခြားသည်, မဟုတ်ရင်ထပ်တူတန်ဖိုးများကိုထပ်ခါတလဲလဲရေးရန်လိုအပ်သည်။
အကယ်. တန်ဖိုးသည် array သို့မဟုတ်အရာဝတ်ထုတစ်ခုဖြစ်ပါကအဓိကအမျိုးအစားတစ်ခုအနေဖြင့်အသုံးမပြုနိုင်ပါက array_flip () သည် အမှားတစ်ခုသို့ပြောင်းလဲလိမ့်မည်သို့မဟုတ်အလိုအလျောက် string ကိုအလိုအလျောက်ပြောင်းလဲလိမ့်မည်
array_flip ကိုသာ သုံး. တန်ဖိုးရှာဖွေမှုများသည်မကြာခဏရှိပြီး Arrays များသည်ကြီးမားသည့်အခါသင်အားသာချက်များကိုရောင်ပြန်ဟပ်နိုင်သည်။ သင်တစ်ကြိမ်သာကြည့်လျှင်၎င်းသည်စွမ်းဆောင်ရည်ကိုဖြုန်းတီးလိမ့်မည်။
array_flip () နှင့် in_array () ကိုပေါင်းစပ်ခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်မကြာခဏခင်းကျင်းရှာဖွေမှုများလိုအပ်သည့်အခြေအနေများတွင်စွမ်းဆောင်ရည်ကိုသိသိသာသာတိုးတက်စေနိုင်သည်။ ၎င်း၏အဓိကအယူအဆမှာ "Value lookup" ကို "key loveup" သို့ပြောင်းရန်နှင့် PHP Array Hash ဇယား၏မြန်ဆန်သော access access feature ကိုအားသာချက်ယူရန်ဖြစ်သည်။
ဤနည်းစနစ်ကိုကျွမ်းကျင်မှုသည်များစွာသောအချက်အလက်များသို့မဟုတ်စနစ်စွမ်းဆောင်ရည်ကိုပိုမိုကောင်းမွန်အောင်ပြုလုပ်သောအခါအလွန်အထောက်အကူပြုသည်။