လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> အသုံးအများဆုံးနားလည်မှုလွဲမှားခြင်းများ - အသုံးပြုသူအချက်အလက်များ၏တိုက်ရိုက် array_flip () အကျိုးဆက်များ

အသုံးအများဆုံးနားလည်မှုလွဲမှားခြင်းများ - အသုံးပြုသူအချက်အလက်များ၏တိုက်ရိုက် array_flip () အကျိုးဆက်များ

M66 2025-06-03

PHP Arrays နှင့်ဆက်ဆံရာတွင် Array_flip () သည်ရိုးရှင်းသောရိုးရိုးရှင်းရှင်းဖြစ်သော်လည်းလျှို့ဝှက်အန္တရာယ်ရှိနိုင်သည်။ ၎င်း၏ရည်ရွယ်ချက်မှာအသုံးပြုသူပေးထားသောအချက်အလက်များအတွက်၎င်းကိုတိုက်ရိုက်အသုံးပြုသောအခါ၎င်းသည်သင်မျှော်လင့်ထားသည့်ပြ problems နာများကိုဖြစ်ပေါ်စေသည်။

ဤဆောင်းပါးသည် array_flip () ၏ပုံရိပ်များကိုဥပမာအားဖြင့်ခွဲခြမ်းစိတ်ဖြာလိမ့်မည်။

Array_Flip () ?

Array_flip () ၏အခြေခံအသုံးပြုမှုသည်အလွန်အလိုလိုသိသည်။

 $original = [
    'apple' => 'fruit',
    'carrot' => 'vegetable'
];

$flipped = array_flip($original);

print_r($flipped);

ထုတ်လုပ်မှု -

 Array
(
    [fruit] => apple
    [vegetable] => carrot
)

၎င်းသည်တန်ဖိုးကိုသော့တစ်ခုနှင့်တန်ဖိုးတစ်ခု၏သော့ကိုပြောင်းလဲစေသည်။ ၎င်းသည်အချို့သောအခြေအနေများတွင် "တန်ဖိုးများ" အပေါ် အခြေခံ. "သော့များ" ကိုအလျင်အမြန်ရှာလိုပါကဤအချက်များတွင်အလွန်အသုံးဝင်သည်။ သို့သော်ပြ problem နာကိုလည်းဤအဓိပ္ပါယ်ဖွင့်ဆိုချက်တွင်ဝှက်ထားသည်။

မေးခွန်း 1 - အသုံးပြုသူအချက်အလက်များတွင်တန်ဖိုးများကိုပုံတူပွား

array_flip () flipping သည့်အခါတန်ဖိုးများအားလုံးဟာထူးခွားတဲ့နှင့်သော့ချက်ရရှိနိုင်ဖို့လိုအပ်ပါတယ်။ အကယ်. သင့်တွင်သင်၏ခင်းကျင်းမှုတွင်ထပ်တူတန်ဖိုးများရှိပါကအမှားအယွင်းများမပေးဘဲ ယခင်အချက်အလက်များကိုတိတ်တဆိတ်ထပ်ခါတလဲလဲရေးသား လိမ့်မည်။

အသုံးပြုသူအချက်အလက်များ၏ဥပမာတစ်ခုကိုကြည့်ကြစို့။

 $userInput = [
    'user1' => 'admin',
    'user2' => 'editor',
    'user3' => 'admin' // ထပ်ခါတလဲလဲတန်ဖိုး
];

$flipped = array_flip($userInput);

print_r($flipped);

output ကို:

 Array
(
    [admin] => user3
    [editor] => user2
)

admil သည် user1 နှင့်ကိုက်ညီသည်ဟုသင်ထင်ပါသလား။ မဟုတ်ပါ, User3 က overrides ။ အသုံးပြုသူအခန်းကဏ် role များ, ခွင့်ပြုချက်များ, အမှတ်အသားများနှင့်အခြားအချက်အလက်များကိုလုပ်ဆောင်သောအခါယုတ္တိအမှားများကိုဖြစ်ပေါ်စေသည်။

မေးခွန်း 2 - သော့များအနေဖြင့်မရရှိနိုင်သည့်တန်ဖိုးများ (Scalar)

PHP ရှိ Array keys များသည်ကိန်းသို့မဟုတ်ကြိုးများသာဖြစ်နိုင်သည်။ array ကိုတင်သွင်းထားသော array တွင်ခင်းကျင်းခြင်းသို့မဟုတ်အရာဝတ်ထုတစ်ခုပါ 0 င်သည်ဆိုပါစို့

 $userInput = [
    'key1' => 'value1',
    'key2' => ['not' => 'allowed'],
    'key3' => 'value3'
];

$flipped = array_flip($userInput);

print_r($flipped);

ထုတ်လုပ်မှု -

 Warning: array_flip(): Can only flip STRING and INTEGER values!
Array
(
    [value1] => key1
    [value3] => key3
)

ဤသတိပေးချက်ကိုဖွံ့ဖြိုးရေးပတ် 0 န်းကျင်တွင်တွေ့မြင်နိုင်သော်လည်းထုတ်လုပ်မှုပတ်ဝန်းကျင်တွင်ဖုံးကွယ်ထားနိုင်သည်

မေးခွန်း 3- တန်ဖိုးအမျိုးအစားပြောင်းလဲမှုကြောင့်ဖြစ်ရတဲ့ခန့်မှန်းရခက်တဲ့အပြုအမူ

တန်ဖိုးများသည်အတူတူပင်ကြည့်နေလျှင်ပင် array_flip () သည် အမျိုးအစားများကိုတင်းကြပ်စွာခွဲခြားလိမ့်မည်။ ဥပမာအားဖြင့်, string ကို "1" နှင့်ကိန်း 1 ကို overwrite ဖြစ်စေမည့်တူညီသောသော့ချက်အဖြစ်သတ်မှတ်သည်။

 $userInput = [
    'a' => 1,
    'b' => '1'
];

$flipped = array_flip($userInput);

print_r($flipped);

ထုတ်လုပ်မှု -

 Array
(
    [1] => b
)

သော့ "a" လုံးဝပျောက်ဆုံးသွားပြီ။

လုံခြုံသောအခြားနည်းလမ်းများ

အကယ်. တန်ဖိုးများမှနောက်ကျော - စစ်ဆေးခြင်းသော့ချက်များ၏လုပ်ဆောင်မှုကိုသင်လိုအပ်လျှင်, သို့သော်ဒေတာအရင်းအမြစ်သည်ယုံကြည်စိတ်ချမှုမရှိပါ။ အောက်ပါနည်းလမ်းကိုသုံးနိုင်သည်။

နည်းလမ်း 1 - သော့ချက်တန်ဖိုးအတွဲအားလုံးကိုစုဆောင်းပါ

 $reverseMap = [];
foreach ($userInput as $key => $value) {
    if (is_scalar($value)) {
        $reverseMap[$value][] = $key;
    }
}

ဤနည်းအားဖြင့်ထပ်တူတန်ဖိုးများအားလုံးနှင့်သက်ဆိုင်သောသော့များကိုထိန်းသိမ်းထားနိုင်သည်။

 print_r($reverseMap);

ထုတ်လုပ်မှု -

 Array
(
    [admin] => Array ( [0] => user1 [1] => user3 )
    [editor] => Array ( [0] => user2 )
)

အကျဉ်းချုပ် - array_flip () ကိုအသုံးပြုခြင်းသည်အလွန်ဂရုစိုက်ရန်လိုအပ်သည်

Array_Flip () စင်ကြယ်သောစနစ်တကျပြည်တွင်းဒေတာများကိုကိုင်တွယ်သောအခါအလွန်အသုံးဝင်သည်

  • တန်ဖိုးသည်ထူးခြားသည်

  • တန်ဖိုးသည်စကေးအမျိုးအစား (string or integer) ၏သေချာမှုကိုသေချာအောင်လုပ်ပါ။

  • သင့်ရဲ့လှန်ရည်ရွယ်ချက်ကိုရှင်းရှင်းလင်းလင်းသိပြီးခြွင်းချက်များကိုကိုင်တွယ်ရန်အဆင်သင့်ဖြစ်မည်

ဒီလိုမှမဟုတ်ရင်သင်ဟာ bug တွေရဲ့ bug တွေကိုတိတ်တဆိတ်မိတ်ဆက်ပေးနိုင်ပြီးတစ်နေ့မှာသုံးစွဲသူကဖိုရမ်မှာ ခွင့် ပြုချက်အမှားအယွင်းတွေအကြောင်းကိုမကျေနပ်တဲ့အထိ,

ဤဆောင်းပါးသည်လျှို့ဝှက်သော်လည်းအန္တရာယ်ရှိသောတွင်းကိုရှောင်ရှားရန်သင်ကူညီနိုင်လိမ့်မည်ဟုမျှော်လင့်ပါ။ အကယ်. သင်သည်ခွင့်ပြုချက်စီမံခန့်ခွဲမှုစနစ် (သို့) ဒေတာမြေပုံရေးဆွဲခြင်းလုပ်ငန်းကိုရေးဆွဲနေပါက,

နောက်ထပ်လေ့လာမှုအတွက် ကျေးဇူးပြု. စစ်ဆေးပါ။
?? https://m66.net/php-momanual/array_flip
?? https://m66.net/php-best-practices

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