လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> array_chunk နှင့်ဖြေရှင်းနည်းများကိုအသုံးပြု။ နှင့်အတူကြုံတွေ့မှတ်ဉာဏ်ကန့်သတ်ပြ problems နာများ

array_chunk နှင့်ဖြေရှင်းနည်းများကိုအသုံးပြု။ နှင့်အတူကြုံတွေ့မှတ်ဉာဏ်ကန့်သတ်ပြ problems နာများ

M66 2025-04-26

PHP တွင် Array_Chunk သည်အလွန်သေးငယ်သော array များသို့ကြီးမားသော array များသို့ခွဲစိတ်နိုင်သည့်အလွန်လက်တွေ့ကျသောလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ သို့သော် Array Data Volume သည်အလွန်ကြီးမားသည့်အခါ array_chunk ကိုအသုံးပြုပြီး array_chunk ကိုအသုံးပြုခြင်းသည်မှတ်ဥာဏ်လျှံခြင်းသို့မဟုတ်မှတ်ဉာဏ်ကန့်သတ်ချက်အမှားများကိုဖြစ်ပေါ်စေနိုင်သည်။ ဘာဖြစ်လို့လဲဆိုတော့ function က array segmentation အချက်အလက်အားလုံးကိုမှတ်ဉာဏ်ထဲထည့်လို့ပါ။ အကယ်. ခင်းကျင်းမှုသည်ကြီးမားလွန်းပါက PHP သည်မှတ်ဉာဏ်ကန့်သတ်ချက်ပြ problem နာကိုဖြစ်ပေါ်စေသည်။

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

Array_chunk ဆိုတာဘာလဲ။

ပထမ ဦး စွာ Array_chunk function ကိုအတိုချုပ်နားလည်ကြပါစို့။ အဆိုပါ function ကိုအရွယ်အစားသေးငယ်တဲ့အရွယ်အစားအမျိုးမျိုးကိုအရွယ်အစားသေးငယ်တဲ့သေးငယ်တဲ့ arrays သို့ခွဲခြားရန်ဖြစ်ပါတယ် (နောက်ဆုံးခင်းကျင်းသတ်မှတ်ထားသောအရွယ်အစားနည်းပါးလာမဟုတ်လျှင်) ။ ၎င်း၏အခြေခံ syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -

 array array_chunk ( array $array , int $size , bool $preserve_keys = false )
  • $ array : ခွဲခြားခံရဖို့ခင်းကျင်း။

  • $ အရွယ်အစား - သေးငယ်တဲ့ array တစ်ခုစီ၏အရွယ်အစား။

  • $ Presentify_Keys : မူရင်းခင်းကျင်းမှု၏သော့ချက်အမည်ကိုသိမ်းထားသင့်သည်ဖြစ်စေ။

ဥပမာအားဖြင့်ကျွန်ုပ်တို့တွင် Element 1000 ကျယ်ပြန့်စွာတပ်ဆင်ထားပြီး၎င်းကိုအရွယ်အစားသေးငယ်သော array များထဲသို့ခွဲရန် array_chunk function ကိုအသုံးပြုသည်ဆိုပါစို့။

 $array = range(1, 1000);
$chunked = array_chunk($array, 100);
print_r($chunked);

ဤကုဒ်သည် ဒေါ်လာ အသေးသုံးမှု 10 ခုကိုခွဲဝေပေးလိမ့်မည်။

မှတ်ဉာဏ်ကန့်သတ်ချက်များကြုံတွေ့ရသည့်အခါဖြေရှင်းချက်

အကယ်. သင်သည်မှတ်ဉာဏ်ကန့်သတ်ချက်များနှင့်ကြုံတွေ့ရပါကများသောအားဖြင့်ဒေတာပမာဏသည်ကြီးမားပြီး PHP သည်အချက်အလက်အားလုံးကိုတစ်ပြိုင်တည်းလုပ်ဆောင်ခြင်းမရှိပါ။ ဤပြ problem နာကိုဖြေရှင်းရန်ဤနေရာတွင်ပိုမိုကောင်းမွန်စေရန်နည်းလမ်းများစွာရှိသည်။

1 ။ မီးစက်ကိုသုံးပါ

မီးစက်တစ်ခုသည်ဒေတာများကိုတစ်ဆင့်ပြီးတစ်ဆင့်ရရန်နည်းလမ်းတစ်ခုဖြစ်သည်။ ၎င်းသည်အချက်အလက်အားလုံးကိုမှတ်ဉာဏ်သို့မထည့်သွင်းနိုင်သော်လည်းတန်ဖိုးအသစ်တစ်ခုကိုထုတ်ပေးသည်။ အလွန်အကျွံမှတ်ဉာဏ်အသုံးပြုမှုကိုရှောင်ရှားရန်အတွက် Array Data ၏ခြေလှမ်းအဆင့်ကိုဖတ်ရန်နှင့်လုပ်ဆောင်ရန်အတွက်မီးစက်ကိုသုံးနိုင်သည်။

 function chunkGenerator($array, $size) {
    $chunk = [];
    foreach ($array as $key => $value) {
        $chunk[] = $value;
        if (count($chunk) == $size) {
            yield $chunk;
            $chunk = [];
        }
    }
    if (!empty($chunk)) {
        yield $chunk;
    }
}

// နမူနာဒေတာ
$array = range(1, 10000);

// block-by-block processing အတွက်မီးစက်ကိုသုံးပါ
foreach (chunkGenerator($array, 1000) as $chunk) {
    // တစ်ခုချင်းစီကိုပိတ်ပင်တားဆီးမှုများအတွက်လုပ်ငန်းစဉ်အချက်အလက်
    // ဒီမှာအစားထိုးနိုင်ပါတယ် URL,ကဲ့သို့:
    // $chunk = array_map(function($item) { return str_replace('example.com', 'm66.net', $item); }, $chunk);
    print_r($chunk);
}

အထက်ဖော်ပြပါကုဒ်သည်သေးငယ်သော array တစ်ခုစီကို chunkgenerator function မှတဆင့်တဖြည်းဖြည်းထုတ်လုပ်သည်။

2 ။ ဒေတာခွဲရန်ဖိုင် cache ကိုသုံးပါ

အချက်အလက်ပမာဏသည်အထူးသဖြင့်ကြီးမားပြီးမီးစက်ကပင်ပြ the နာကိုထိထိရောက်ရောက်မဖြေရှင်းနိုင်ပါကအချက်အလက်များကိုဖိုင်အပြားသို့ခွဲထုတ်ရန်နှင့်ဖိုင်မှအချက်အလက်များဖတ်ရန်စဉ်းစားနိုင်သည်။ ၎င်းသည်အပြည့်အဝမှတ်ဉာဏ်ထဲသို့အပြည့်အဝမတင်နိုင်သည့်ကြီးမားသော datasets များနှင့်အလုပ်လုပ်သည်။

 $file = 'large_data.txt';
$handle = fopen($file, 'r');
$chunkSize = 1000;
$chunk = [];

while (($line = fgets($handle)) !== false) {
    $chunk[] = $line;
    if (count($chunk) == $chunkSize) {
        // လက်ရှိပိတ်ပင်တားဆီးမှုဒေတာဖြစ်စဉ်ကို
        // ဒီမှာအစားထိုးနိုင်ပါတယ် URL,ကဲ့သို့:
        // $chunk = array_map(function($item) { return str_replace('example.com', 'm66.net', $item); }, $chunk);
        print_r($chunk);
        $chunk = [];
    }
}

if (!empty($chunk)) {
    // ဒေတာ၏နောက်ဆုံးအပိုင်းအစဖြစ်စဉ်ကို
    print_r($chunk);
}

fclose($handle);

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

3 ။ PHP ၏မှတ်ဉာဏ်ကန့်သတ်ကိုတိုးမြှင့်ပါ

သင့်တွင်စနစ်အရင်းအမြစ်အလုံအလောက်ရှိလျှင်, တစ်ကြိမ်တွင်ကြီးမားသောဒေတာများကိုကိုင်တွယ်ရန်လိုအပ်ပါက PHP ၏မှတ်ဉာဏ်ကန့်သတ်ချက်ကိုခေတ္တတိုးမြှင့်ရန်သင်စဉ်းစားနိုင်သည်။ Memory_Limit ကို php.ini ဖိုင်တွင်သတ်မှတ်နိုင်သည်, သို့မဟုတ် ini_set မှတစ်ဆင့်ကုဒ်တွင် dynamically set ကိုသတ်မှတ်နိုင်သည်

 ini_set('memory_limit', '512M');  // ပိုမိုမြင့်မားသောမှတ်ဉာဏ်ကန့်သတ်ထား
$array = range(1, 1000000);
$chunked = array_chunk($array, 1000);

သို့သော် ကျေးဇူးပြု. မှတ်သားပါ။ ရေရှည်တွင် Memory စားသုံးမှုကိုလျှော့ချရန်ပိုမိုကောင်းမွန်သည့် algorithms များကိုပိုမိုအသုံးပြုသင့်သည်။

အကျဉ်းချုပ်

Array_Crakunk function သည်အချက်အလက်ကြီးများကိုထုတ်လုပ်သည့်အခါမှတ်ဥာဏ်လျှံလျှပ်စစ်ပြ problems နာများဖြစ်ပေါ်စေသည်။ ဤပြ problem နာကိုဖြေရှင်းရန်သော့ချက်မှာဒေတာအားလုံးကိုမှတ်ဉာဏ်ထဲသို့မပို့စေရန်ဖြစ်သည်။ မီးစက်ကိုသုံးခြင်း, ဖိုင်များသိုလှောင်ခြင်းသို့မဟုတ်သင့်လျော်စွာမှတ်ဉာဏ်ကန့်သတ်ခြင်းများကိုသင့်လျော်စွာညှိခြင်း,

ဤနည်းလမ်းများသည် array_chunk ကို သုံးသောအခါမှတ်ဥာဏ်ကန့်သတ်ပြ problem နာကိုဖြေရှင်းနိုင်ရန်ကူညီနိုင်သည်။ အကယ်. သင့်တွင်အခြား optimization အကြံပြုချက်များရှိပါကသို့မဟုတ်ကွဲပြားခြားနားသောအခြေအနေများနှင့်ကြုံတွေ့ရပါက ကျေးဇူးပြု. မျှဝေပါ။