PHP တွင် array_chunk function သည်ကြီးမားသောအပိုင်းအစများကိုသေးငယ်သောအပိုင်းအစများအဖြစ်ခွဲထုတ်ရန်အလွန်လက်တွေ့ကျသောကိရိယာတစ်ခုဖြစ်သည်။ ၎င်းသည်အဆင်ပြေသောအင်္ဂါရပ်များကိုထောက်ပံ့ပေးသော်လည်းအထူးသဖြင့်ခင်းကျင်းမှုသည်အလွန်ကြီးမားသောသို့မဟုတ်အလွန်ကြီးမားသောလုပ်ကွက်များလွန်းသည့်အခါ၎င်းသည်မှတ်ဥာဏ်အလွန်များပြားလှသည့်ပြ issues နာများကိုဖြစ်ပေါ်စေသည်။
array_chunk function ၏အခြေခံ syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -
array_chunk(array $array, int $length, bool $preserve_keys = false): array
$ array : input array ။
$ အရှည် - subarray ရှိဒြပ်စင်အရေအတွက်။
$ Presentify_Keys - မူလခင်းကျင်းမှု၏အဓိကတန်ဖိုးကိုထိန်းသိမ်းရန်ဆုံးဖြတ်သည့် boolean တန်ဖိုး။
$array = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$chunks = array_chunk($array, 3);
print_r($chunks);
ထုတ်လုပ်မှု -
Array
(
[0] => Array ( [0] => 1 [1] => 2 [2] => 3 )
[1] => Array ( [0] => 4 [1] => 5 [2] => 6 )
[2] => Array ( [0] => 7 [1] => 8 [2] => 9 )
)
ဤကုဒ်သည် array $ array ကို 3 လုပ်ကွက်တစ်ခုအဖြစ်ခွဲထားသည်။
သင်အလွန်ကြီးမားသောခင်းကျင်းမှုကိုခွဲထုတ်လိုက်သောအခါ array_chunk သည် subarray တစ်ခုစီတွင်မူရင်းခင်းကျင်းမှုမှအချက်အလက်များ၏အစိတ်အပိုင်းတစ်ခုပါ 0 င်သည်။ အကယ်. မူရင်းခင်းကျင်းသည်အလွန်ကြီးမားပြီးလုပ်ကွက်အရေအတွက်အလွန်ကြီးမားသည်ဆိုပါက PHP သည်မှတ်ဥာဏ်လျှံလျှောဆိုင်ရာပြ issues နာများကိုဖြစ်ပေါ်စေနိုင်သည်။
သင့်တွင်သန်းပေါင်းများစွာသောဒြပ်စင်များပါ 0 င်သောကြီးမားသောခင်းကျင်းမှုရှိသည်ဆိုပါစို့။ အကယ်. သင်သည် Array_Chunk ကို သုံး. chink at 1000 ကိုအပိုင်း 1000 ခွဲပါက၎င်းသည် subarray အမြောက်အများကိုဖန်တီးနိုင်သည်။ ၎င်းသည်မှတ်ဥာဏ်လျှံကိုဖြစ်ပေါ်စေသည်။
မှတ်ဥာဏ်လျှံကိုရှောင်ရှားရန် array_chunk ကို သုံးသောအခါအောက်ပါနည်းဗျူဟာများကိုကျင့်သုံးနိုင်သည်။
မီးစက်များသည် PHP မှပေးသောမှတ်ဉာဏ်စွမ်းဆောင်ရည်ပေးသည့်အချက်များဖြစ်ပြီးအချက်အလက်အားလုံးကိုမှတ်ဉာဏ်ထဲထည့်မည့်အစားတောင်းဆိုမှုနှင့်ပတ်သက်သောအချက်အလက်များကိုထုတ်ပေးနိုင်သည်။ သငျသညျပိတ်ပင်တားဆီးမှုများကဒေတာများကိုထုတ်လုပ်ရန်မီးစက်ကိုသုံးနိုင်သည်။
function chunkGenerator(array $array, $chunkSize) {
$chunk = [];
foreach ($array as $key => $value) {
$chunk[] = $value;
if (count($chunk) >= $chunkSize) {
yield $chunk;
$chunk = [];
}
}
if (count($chunk) > 0) {
yield $chunk;
}
}
$array = range(1, 10000000);
foreach (chunkGenerator($array, 1000) as $chunk) {
// တစ်ခုချင်းစီကိုဖြစ်စဉ်ကို $chunk
}
ဒီဥပမာမှာကျွန်တော်တို့ဟာမီးစက်ဖန်တီးဖို့ အထွက်နှုန်း သော့ချက်စာလုံးကိုသုံးခဲ့တယ်။ ပိတ်ပင်တားဆီးမှုတစ်ခုချင်းစီကိုပိတ်ပင်တားဆီးမှုတိုင်းကို Blocks အားလုံးကို memye memory ကို loading လုပ်မယ့်အစားခေတ္တပြန်ပို့လိုက်တယ်။ ဤသည်သိသိသာသာမှတ်ဉာဏ်အသုံးပြုမှုကိုလျှော့ချနိုင်ပါတယ်။
အကယ်. သင်သည်မီးစက်ကိုအသုံးမပြုနိုင်ပါကအသုတ်များသို့မဟုတ်အချက်အလက်များကိုဖြည့်စွက်ခြင်းဖြင့်မှတ်ဥာဏ်လျှံကိုရှောင်ရှားရန်စဉ်းစားနိုင်သည်။ ဥပမာအားဖြင့်, သင်၏ဒေတာသည်ဒေတာဘေ့စ်သို့မဟုတ်ပြင်ပ API မှလာသည်ဆိုပါစို့။
သင်၏ဒေတာများကို URL မှရယူထားသည်ဟုယူဆသည်, သင်သည်အရာရာကိုတစ်ပြိုင်နက်တည်းတင်မည့်အစား URL အဆင့်မှအချက်အလက်များကိုတစ်ဆင့်ပြီးတစ်ဆင့်သို့တင်နိုင်သည်။
function fetchDataInChunks($url, $chunkSize) {
$handle = fopen($url, 'r');
$chunk = [];
while (($line = fgets($handle)) !== false) {
$chunk[] = $line;
if (count($chunk) >= $chunkSize) {
yield $chunk;
$chunk = [];
}
}
fclose($handle);
if (count($chunk) > 0) {
yield $chunk;
}
}
$url = 'https://m66.net/data.csv';
foreach (fetchDataInChunks($url, 1000) as $chunk) {
// တစ်ခုချင်းစီကိုဖြစ်စဉ်ကို $chunk
}
အကယ်. သင်၏ Array အချက်အလက်သည်အလွန်ကြီးမားသော်လည်းသင်မီးစက်မသုံးလိုပါကပိတ်ဆို့ခြင်းဖြင့်တစ်ချိန်တည်းတွင်ဖန်တီးထားသောလုပ်ကွက်အရေအတွက်ကိုသင်လျှော့ချနိုင်သည်။ ဥပမာအားဖြင့် Block Size ကိုအနည်းငယ်ပိုကြီးစွာ ထား. ၎င်းတို့အားသေးငယ်သောလုပ်ကွက်များသို့ခွဲဝေမည့်အစားပိုမိုကြီးမားသောအချက်အလက်များကိုလုပ်ပါ။
Array_Chunk နှင့်ကြီးမားသောခင်းကျင်းမှုများကိုခွဲထုတ်သောအခါ၎င်းသည်အထူးသဖြင့်ခင်းကျင်းမှုသည်အထူးသဖြင့်ကြီးမားသောသို့မဟုတ်လုပ်ကွက်အရေအတွက်ကြီးမားသည်။ ဤပြ problem နာကိုဖြေရှင်းရန်အောက်ပါနည်းလမ်းများကိုသုံးနိုင်သည်။
Coldator ကိုသုံးပါ - ဝယ်လိုအားနှင့်ပတ်သက်သောအချက်အလက်များကိုထုတ်လုပ်ခြင်းဖြင့်မှတ်ဉာဏ်ခြေရာကိုလျှော့ချပါ။
အဆင့်ဆင့် - အချက်အလက်များကိုပြင်ပအရင်းအမြစ်မှလာသည်ဆိုပါကအချက်အလက်များကိုအသုတ်တွင်တင်နိုင်သည်။
လုပ်ကွက်များကိုအရွယ်အစားပြောင်းပါ ။ လုပ်ကွက်အရေအတွက်ကိုလျှော့ချပါ။ ပိတ်ပင်တားဆီးမှုတစ်ခုစီ၏အရွယ်အစားကိုတိုးမြှင့်ပါ, မှတ်ဉာဏ်အသုံးပြုမှုကိုလျှော့ချပါ။
ဤနည်းလမ်းများသည်ကြီးမားသောအချက်အလက်ပမာဏကိုပိုမိုထိရောက်စွာလုပ်ဆောင်နိုင်သည့်အခါမှတ်ဥာဏ်ပြ problems နာများကိုဖြေရှင်းနိုင်ရန်ကူညီနိုင်သည်။