လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> ထိရောက်သောရှာဖွေမှုအောင်မြင်ရန် Array_flip () နှင့် in_array () ကိုအသုံးပြုနည်း

ထိရောက်သောရှာဖွေမှုအောင်မြင်ရန် Array_flip () နှင့် in_array () ကိုအသုံးပြုနည်း

M66 2025-06-03

Daily Php Development တွင် Array Search စစ်ဆင်ရေးများသည်အများအားဖြင့်တန်ဖိုးရှိမှုတစ်ခုတွင်တည်ရှိခြင်းရှိမရှိဆုံးဖြတ်ခြင်းသို့မဟုတ်အချို့သောဒြပ်စင်များ၌အချို့သောဒြပ်စင်များရှာဖွေခြင်းကိုဆုံးဖြတ်ခြင်းကဲ့သို့သောအခြေအနေများဖြစ်သည်။ in_array () သည်အလွန်အလိုလိုသိ။ အသုံးပြုရလွယ်ကူသောလုပ်ဆောင်မှုဖြစ်သော်လည်းစွမ်းဆောင်ရည်သည်ပြ a နာတစ်ခုဖြစ်လာမည့်အခါသို့မဟုတ်မကြာခဏရှာဖွေမှုမြင်ကွင်းကိုရင်ဆိုင်နေရသည့်အခါပြ a နာတစ်ခုဖြစ်လာနိုင်သည်။

ဤဆောင်းပါးသည် array_flip () နှင့် in_array () ကို ပေါင်းစပ်ခြင်းဖြင့်ပိုမိုထိရောက်သောခင်းကျင်းရှာဖွေရေးနည်းလမ်းများအောင်မြင်ရန်မည်သို့အောင်မြင်ရမည်ကိုမိတ်ဆက်ပေးလိမ့်မည်။

1 ။ IN_ARRAY ၏အသုံးပြုမှုနှင့်စွမ်းဆောင်ရည်ပြ issues နာများ ()

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 လုံးကိုဖြတ်သန်းသွားလိမ့်မည်။

2 ။ array_flip ကိုသုံးပါ။ ရှာဖွေမှုကို hash မြေပုံသို့ပြောင်းရန်

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 () ကိုစတင်ခြင်းရှိသော်လည်းစွမ်းဆောင်ရည်တိုးတက်မှုသည်မကြာခဏရှာဖွေမှုအခြေအနေများတွင်ကြီးမားသည်။

3 ။ ပေါင်းစပ်အသုံးပြုမှုအတွက်လက်တွေ့အသုံးချမှုအခြေအနေများ

ပိုမို. လက်တွေ့ကျသောဇာတ်လမ်းတစ်ပုဒ်ကိုတုပကြပါစို့။ ဥပမာအားဖြင့်အသုံးပြုသူများအစုမှတင်သွင်းသော 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 ခွင့်ပြုသူ အရေအတွက်သည်ကြီးမားလာသောအခါနည်းလမ်းနှစ်ခုသည်နည်းလမ်းတစ်ခုထက်သိသိသာသာပိုမိုမြန်ဆန်လိမ့်မည်။

4 ။ မှတ်စုများ

  • Array_Flip () သည် ခင်းကျင်းမှု၏တန်ဖိုးသည်ထူးခြားသည်, မဟုတ်ရင်ထပ်တူတန်ဖိုးများကိုထပ်ခါတလဲလဲရေးရန်လိုအပ်သည်။

  • အကယ်. တန်ဖိုးသည် array သို့မဟုတ်အရာဝတ်ထုတစ်ခုဖြစ်ပါကအဓိကအမျိုးအစားတစ်ခုအနေဖြင့်အသုံးမပြုနိုင်ပါက array_flip () သည် အမှားတစ်ခုသို့ပြောင်းလဲလိမ့်မည်သို့မဟုတ်အလိုအလျောက် string ကိုအလိုအလျောက်ပြောင်းလဲလိမ့်မည်

  • array_flip ကိုသာ သုံး. တန်ဖိုးရှာဖွေမှုများသည်မကြာခဏရှိပြီး Arrays များသည်ကြီးမားသည့်အခါသင်အားသာချက်များကိုရောင်ပြန်ဟပ်နိုင်သည်။ သင်တစ်ကြိမ်သာကြည့်လျှင်၎င်းသည်စွမ်းဆောင်ရည်ကိုဖြုန်းတီးလိမ့်မည်။

5 ။ အကျဉ်းချုပ်

array_flip () နှင့် in_array () ကိုပေါင်းစပ်ခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်မကြာခဏခင်းကျင်းရှာဖွေမှုများလိုအပ်သည့်အခြေအနေများတွင်စွမ်းဆောင်ရည်ကိုသိသိသာသာတိုးတက်စေနိုင်သည်။ ၎င်း၏အဓိကအယူအဆမှာ "Value lookup" ကို "key loveup" သို့ပြောင်းရန်နှင့် PHP Array Hash ဇယား၏မြန်ဆန်သော access access feature ကိုအားသာချက်ယူရန်ဖြစ်သည်။

ဤနည်းစနစ်ကိုကျွမ်းကျင်မှုသည်များစွာသောအချက်အလက်များသို့မဟုတ်စနစ်စွမ်းဆောင်ရည်ကိုပိုမိုကောင်းမွန်အောင်ပြုလုပ်သောအခါအလွန်အထောက်အကူပြုသည်။