PHP တွင် array_column function ကိုများသောအားဖြင့်ရှုထောင့်အမျိုးမျိုးမှကော်လံတစ်ခုမှအချက်အလက်များကိုထုတ်ယူရန်အသုံးပြုသည်။ သို့သော်အချို့ဖြစ်ရပ်များတွင် array_column ကို အသုံးပြုခြင်းသည်စွမ်းဆောင်ရည်ပြ problems နာများကိုဖြစ်ပေါ်စေနိုင်သည်။ ဤပြ problem နာအတွက်သော့ချက်မှာ array_colum သည် မူရင်းခင်းကျင်းမှုကိုအကြိမ်ကြိမ်ဖြတ်သန်းသွားလိမ့်မည်ဖြစ်သည်။ အကယ်. ကျွန်ုပ်တို့သည်ရလဒ်များကိုမသိမ်းဆည်းပါကထပ်ခါတလဲလဲဖြတ်သန်းသွားသောဖြတ်သန်းမှုနှင့်မလိုအပ်သောစွမ်းဆောင်ရည်စားသုံးမှုဆီသို့ ဦး တည်သွားစေနိုင်သည်။ ဤဆောင်းပါးသည် cache p မူဝါဒများမှတစ်ဆင့် array_colnum ကို အသုံးပြုသောအခါထပ်ခါတလဲလဲပြင်ဆင်ခြင်းကိုမည်သို့ရှောင်ရှားရမည်ကိုလေ့လာလိမ့်မည်။
အောက်ပါနမူနာကုဒ်ကိုသုံးသပ်ကြည့်ပါ။
$array = [
['id' => 1, 'name' => 'Alice', 'age' => 25],
['id' => 2, 'name' => 'Bob', 'age' => 30],
['id' => 3, 'name' => 'Charlie', 'age' => 35]
];
$names = array_column($array, 'name');
ဤဥပမာတွင် array_column သည် တစ်ချိန်က ဒေါ်လာ array ခင်းကျင်းမှုနှင့်တစ်ဖက်စီတွင်ဖြ ည့ ်ဆည်းပေးမည်။ ဤစစ်ဆင်ရေးသည်အထူးစျေးကြီးသော်လည်းကွဲပြားခြားနားသောကော်လံများနှင့်အကြိမ်ပေါင်းများစွာထုတ်ယူရန်လိုအပ်ပါကသို့မဟုတ်ခင်းကျင်းမှုကြီးမားစွာဖြင့်ထပ်ခါတလဲလဲ array_colnum ကို သုံးပါ။
ထပ်ခါတလဲလဲဖြတ်သန်းခြင်းကိုရှောင်ရှားရန်, ကော်လံတစ်ခု၏ပထမ ဦး ဆုံးအကြိမ်ထုတ်ယူသောအခါရလဒ်ကို cache ထဲသိုလှောင်ထားနိုင်သည်။ နောက်တစ်ကြိမ်တွင်တူညီသောကော်လံလိုအပ်ပါသည်, ၎င်းသည် array_column ခေါ်ဆိုခြင်းမရှိဘဲတိုက်ရိုက်ဖတ်ပါ။
သိမ်းယူရန်အလွယ်ကူဆုံးနည်းလမ်းမှာထုတ်ယူထားသောကော်လံများကိုသိမ်းရန်အတွက်ခင်းကျင်းရန်ခင်းကျင်းမှုကိုအသုံးပြုရန်ဖြစ်သည်။ ဥပမာအားဖြင့်:
// cache ခင်း array ကိုအစပြုပါ
$cache = [];
function getColumnFromCache($array, $column, &$cache) {
// ကော်လံသည် cache ထဲတွင်ပြီးသားရှိမရှိစစ်ဆေးပါ
if (!isset($cache[$column])) {
// ကော်လံ cache ထဲမှာမဟုတ်ပါဘူးလျှင်,အသုံးပြု array_column ဒေတာကိုရယူပါ,နှင့်ရလဒ်များကို cache
$cache[$column] = array_column($array, $column);
}
return $cache[$column];
}
$array = [
['id' => 1, 'name' => 'Alice', 'age' => 25],
['id' => 2, 'name' => 'Bob', 'age' => 30],
['id' => 3, 'name' => 'Charlie', 'age' => 35]
];
// cache မှရယူပါ 'name' စာရင်း
$names = getColumnFromCache($array, 'name', $cache);
print_r($names);
// 再次cache မှရယူပါ 'name' စာရင်း,ထပ်ခါတလဲလဲဖြတ်သန်းရှောင်ကြဉ်ပါ
$namesAgain = getColumnFromCache($array, 'name', $cache);
print_r($namesAgain);
ဤဥပမာတွင် GetCoNumfromtcache function သည်ကော်လံတစ်ခုအတွက်ဒေတာများကို $ cache array တွင်သိမ်းဆည်းထားခြင်းရှိမရှိစစ်ဆေးသည်။ ဒေတာများကိုသိမ်းဆည်းထားပြီးပါကသိမ်းဆည်းထားသောရလဒ်ကိုတိုက်ရိုက်ပြန်လည်ရောက်ရှိလိမ့်မည်။ ဒီလိုမှမဟုတ်ရင် array_colum ကို ကော်လံဒေတာကိုရယူပြီး cache ထဲမှာသိမ်းထားဖို့လို့ခေါ်တယ်။
အကယ်. သင်၏လျှောက်လွှာသည်ကြီးမားပြီးတောင်းဆိုမှုများမှတူညီသောဒေတာကော်လံများကိုမကြာခဏထုတ်ယူရန်လိုအပ်ပါက Redis သို့မဟုတ် Memcach ကဲ့သို့သောပိုမိုထိရောက်သော cachemes များကိုအသုံးပြုခြင်းကိုစဉ်းစားပါ။
ဥပမာအားဖြင့်, Redis ကို cache coleck data ကိုအသုံးပြုသောကုဒ်သည်ဤကဲ့သို့ဖြစ်နိုင်သည်။
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
function getColumnFromRedis($array, $column, $redis) {
// စစ်ဆေးကြည့်ရှု Redis 中是否已缓存该စာရင်း
$cachedColumn = $redis->get($column);
if ($cachedColumn === false) {
// လှျင် Redis 中没有缓存该စာရင်း,အသုံးပြု array_column ဒေတာကိုရယူပါ
$cachedColumn = json_encode(array_column($array, $column));
// ရလဒ်ကိုသိမ်းဆည်းပါ Redis
$redis->set($column, $cachedColumn);
}
return json_decode($cachedColumn, true);
}
// နမူနာဒေတာ
$array = [
['id' => 1, 'name' => 'Alice', 'age' => 25],
['id' => 2, 'name' => 'Bob', 'age' => 30],
['id' => 3, 'name' => 'Charlie', 'age' => 35]
];
// ရယူ 'name' စာရင်း
$names = getColumnFromRedis($array, 'name', $redis);
print_r($names);
Redis မှတစ်ဆင့် Cached ကော်လံအချက်အလက်များသည်ဤနည်းဖြင့်ထပ်ခါတလဲလဲပြုလုပ်နိုင်သည့်အချက်အလက်များကိုအထူးသဖြင့်မကြာခဏလက်လှမ်းမီသောအခြေအနေများအတွက်ထပ်ခါတလဲလဲလုပ်ဆောင်မှုများကိုများစွာလျှော့ချနိုင်သည်။
cacraing ပေါ်လစီကိုအသုံးပြုခြင်းအားဖြင့် array_colum ကို အသုံးပြုသည့်အခါတူညီသောအချက်အလက်များနှင့်တူညီသောအချက်အလက်များစွာဖြင့်ဖြတ်သန်းသွားသောလမ်းကြောင်းများစွာကိုထိထိရောက်ရောက်ရှောင်ရှားနိုင်ပြီးစွမ်းဆောင်ရည်တိုးတက်အောင်ပြုလုပ်နိုင်သည်။ သေးငယ်တဲ့ applications များအတွက်, ရိုးရိုး memory cache ကို (ဥပမာ Array ကဲ့သို့) ကိုသုံးရန်လုံလောက်သည်; ကြီးမားသော applications များအတွက် perficress သို့မဟုတ် memcached ကဲ့သို့သော cache စနစ်များကိုစွမ်းဆောင်ရည်နှင့်အနိုင်မရသောစွမ်းရည်ကိုပိုမိုတိုးတက်စေရန်အသုံးပြုနိုင်သည်။ မှန်ကန်သောသိုလှောင်ခြင်းအစီအစဉ်ကိုရွေးချယ်ခြင်းသည်အထူးသဖြင့်အချက်အလက်အမြောက်အများကိုပြုပြင်သည့်အခါအစီအစဉ်၏စွမ်းဆောင်ရည်ကိုအလွန်ကောင်းမွန်စေသည်။