Ring Queue သည် linear data strouse တစ်ခုဖြစ်ပြီးခင်းကျင်းမှု၏အရွယ်အစားကိုအသုံးပြုသည်။ တန်းစီ၏အမြီးသည် array ၏အဆုံးသို့ရောက်ရှိပြီးနောက်အာကာသ၏ပြန်လည်နေရာချထားမှုကိုနားလည်သဘောပေါက်ရန် Array ၏ခေါင်းမှအချက်အလက်များကိုဆက်လက်သိမ်းဆည်းထားဆဲဖြစ်သည်။ ၎င်းသည်ရိုးရာတန်းတန်းစီ "ဒေတာလွှဲပြောင်းခြင်း" သို့မဟုတ်အာကာသစွန့်ပစ်ပစ္စည်းများ၏ပြ problems နာများကိုရှောင်ရှားနိုင်သည်။
Array_Slice ဆိုသည်မှာ PHP မှအသုံးပြုသော fatray အပိုင်းအစများကိုကြားဖြတ်ရန်အသုံးပြုသော function တစ်ခုဖြစ်ပြီး syntax မှာ -
array_slice(array $array, int $offset, ?int $length = null, bool $preserve_keys = false): array
၎င်းသည် array တစ်ခုမှစဉ်ဆက်မပြတ်ဒြပ်စင်များကိုအလွယ်တကူထုတ်ယူနိုင်သည်။ ကွဲပြားခြားနားသောအပိုင်းအစများကိုကြားဖြတ်ရန်နှင့်လက်စွပ်အကျိုးသက်ရောက်မှုကိုတုပရန်၎င်းကိုထည့်ပါ။
တိကျသောအကြံဥာဏ်မှာ -
ကျွန်ုပ်တို့တွင်ကြားခံတစ်ခုအနေဖြင့်သတ်မှတ်ထားသောအရွယ်အစားခင်းကျင်းမှုရှိသည်ဆိုပါစို့။
အညွှန်းကိန်း မှစတင်. n ဆက်တိုက်ဒြပ်စင်များကိုဖတ်ရန်လိုအပ်သည်။ index အဆုံးသို့အညွှန်းကိန်းမှ N Elements များထက်နည်းလျှင်ကျန်ရှိနေသေးသော element များကိုအမြီးရှိ ဦး စွာကြားဖြတ်ပြီးကျန်ရှိသောအစိတ်အပိုင်းများကို ဦး ခေါင်းမှဆက်လက်ခေါက်သည်။
နောက်ဆုံးအနေဖြင့်အပိုင်းနှစ်ပိုင်းကို "Ring" စာဖတ်ခြင်းအကျိုးသက်ရောက်မှုကိုဖွဲ့စည်းရန်ပေါင်းစည်းထားသည်။
<?php
// Ring Queue ကိုဖတ်ပါ
function circularQueueSlice(array $buffer, int $start, int $length): array {
$bufferSize = count($buffer);
$start = $start % $bufferSize; // အစမှတ်အကွာအဝေးအတွင်းဖြစ်ပါတယ်သေချာအောင်လုပ်ပါ
$endLength = $bufferSize - $start;
if ($length <= $endLength) {
// စာပိုဒ်တစ်ပိုဒ်ကိုကြားဖြတ်
return array_slice($buffer, $start, $length);
} else {
// မှstartအဆိုပါခင်းကျင်း၏အဆုံးရန်
$part1 = array_slice($buffer, $start, $endLength);
// မှ数组开头截取剩余长度
$part2 = array_slice($buffer, 0, $length - $endLength);
// အပိုင်းနှစ်ပိုင်းပေါင်းစည်း
return array_merge($part1, $part2);
}
}
// နမူနာကြားခံဒေတာ
$buffer = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'];
// မှ索引6စာဖတ်ခြင်းစတင်ပါ5ဒြပ်,လက်စွပ်ဖတ်ခြင်း
$result = circularQueueSlice($buffer, 6, 5);
print_r($result);
?>
ရလဒ်ရလဒ် -
Array
(
[0] => G
[1] => H
[2] => A
[3] => B
[4] => C
)
ဤတွင် စတင်သည် = 6 ဒြပ် စင် 5 ခုမှစတင်သည်, ဒြပ်စင် 5 ခုကိုဖတ်သည်။ ပထမ ဦး ဆုံးအနေဖြင့် 'G' ',' H ' ကိုဖတ်ပြီး ' a '' ',' C ' ,
Ring Queue များသည် Buffer စီမံခန့်ခွဲမှု, လုပ်ငန်းတာဝန်များ, စီးဆင်းမှုထိန်းချုပ်ရေးနှင့်အခြားအခြေအနေများအတွက်သင့်တော်သည်။ ဥပမာအားဖြင့်, မှတ်တမ်းဖိုင်များကိုဖတ်ရှုသောအခါ, Loop Scheduling algorithm ကိုအကောင်အထည်ဖော်သည့်အခါ Task List သည် 0 င်ရောက်ရန်အလှည့်ကျနေသည်။
အကယ်. သင်သည် PHP ကို data stream processing အတွက်အသုံးပြုပါက array_slice ၏လက်စွပ်ဖြတ်တောက်ခြင်းနည်းလမ်းနှင့်ပေါင်းစပ်ပါက,
အဆိုပါတန်းစီအရွယ်အစားကိုပုံသေသတ်မှတ်ထားပြီး insteration မူဝါဒကိုအရေးပါသောအချက်အလက်များကို overwriteing မှကာကွယ်ရန်အရွယ်အစားထက် ကျော်လွန်. လိုအပ်သည်။
Array_Slice သည် မူရင်းခင်းကျင်းမှုကိုမပြောင်းလဲပါ။
ခြွင်းချက်များကိုရှောင်ကြဉ်ရန် $ Start နှင့် $ အရှည် parameters တွေကို၏ဆင်ခြင်တုံတရားကိုသေချာစေရန်လိုအပ်သည်။
PHP Array လုပ်ဆောင်ချက်များကိုအသုံးပြုခြင်းနှင့်ပတ်သက်သောအသေးစိတ်အချက်အလက်များအတွက် https://gitbox.net/unet/enuation.php သို့ သင်ဝင်ရောက်ကြည့်ရှုနိုင်သည်