လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> floating point arrays ဖြစ်ရန် array_diff () ကိုသုံးရန်လုံခြုံပါသလား။

floating point arrays ဖြစ်ရန် array_diff () ကိုသုံးရန်လုံခြုံပါသလား။

M66 2025-06-06

PHP တွင် array_diff () သည် arrays နှင့် return ကွဲပြားခြားနားမှုများကိုနှိုင်းယှဉ်ရန်အလွန်လက်တွေ့ကျသောလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ ၎င်းသည်တန်ဖိုးများကိုပထမခင်းကျင်းရေးတွင်ဒြပ်စင်များကိုရှာဖွေရန်နှင့်နှိုင်းယှဉ်လျှင်အခြားခင်းကျင်းမှုများတွင်မပါ 0 င်ပါ။ ၎င်းသည် strings and integers များပြုပြင်ခြင်းနှင့် ပတ်သက်. ပြ a နာမဟုတ်ပါ, သို့သော် floating-point array များနှင့်ဆက်ဆံရာတွင် "မမျှော်လင့်သော" အပြုအမူအချို့သည်ရေပေါ်အမှတ်အသားများကြောင့်ဖြစ်ပေါ်လာနိုင်သည်။

Array_diff ၏အခြေခံအသုံးပြုမှု ()

ရိုးရှင်းသောဥပမာတစ်ခုဖြင့်စတင်ကြပါစို့။

 <?php
$a = [1.1, 2.2, 3.3];
$b = [2.2, 3.3];

$result = array_diff($a, $b);
print_r($result);

output ကို:

 Array
(
    [0] => 1.1
)

ဤရလဒ်သည်မျှော်လင့်ချက်များနှင့်အညီဖြစ်သည်။ သို့သော်အချို့ဖြစ်ရပ်များတွင် floating point number များသည်တိကျသောကန့်သတ်ချက်များကြောင့် array_diff () ကိုနှိုင်းယှဉ်ခြင်းတွင်အမှားအယွင်းများကိုဖြစ်ပေါ်စေနိုင်သည်။

Floating Point တိကျမှန်ကန်မှုကြောင့်ဖြစ်ရတဲ့ပြနာတွေ

Floating-point နံပါတ်များသည်ကွန်ပျူတာများတွင်အချို့သောဒ dec မကိန်းများကိုတိကျစွာ ကိုယ်စားပြု. မရပါ, အမှားအယွင်းများအနည်းငယ်သာရှိနိုင်သည်။ ဥပမာအားဖြင့်:

 <?php
$a = [0.1 + 0.2]; // အမှန်တကယ်တန်ဖိုးဖြစ်ပါတယ် 0.30000000000000004
$b = [0.3];

$result = array_diff($a, $b);
print_r($result);

output ကို:

 Array
(
    [0] => 0.30000000000000004
)

0.1 + 0.2 == 0.3 ကို သင်စဉ်းစားမိနိုင်သည်။ သို့သော်ကွန်ပျူတာအတွင်းရှိ binary floating point ကိုယ်စားပြုမှုသည်ဤညီမျှခြင်းကိုအမြဲတမ်းမမှန်ကန်ပါ။ ဆိုလိုသည်မှာ array_diff () သည် တန်ဖိုးနှစ်ခုကို မျှမတူညီသော တန်ဖိုးနှစ်ခုကိုစဉ်း စား. အနှောင့်အယှက်ဖြစ်စေနိုင်သည်။

အဘယ်ကြောင့် array_diff () ပျက်ကွက်?

နောက်ခံအလွှာ ၏နောက်ခံအလွှာသည်တန်ဖိုးနှစ်ခုသည်တန်းတူရှိမရှိဆုံးဖြတ်ရန်အတွက်နှိုင်းယှဉ်နှိုင်းယှဉ်ခြင်း ( == ) ကိုအခြေခံသည်။ သို့သော် floating-point နံပါတ်များ၏တိကျမှန်ကန်မှုပြ problem နာသည်နံပါတ်နှစ်ခုသည်ယုတ္တိနည်းတူညီမျှခြင်းကိုဆိုလိုသည်,

အန္တရာယ်ကင်းရှင်းရေးဆိုင်ရာအန္တရာယ် - ဒေတာတရားစီရင်ခြင်းအမှားများ

ဘဏ် data ာရေးဆိုင်ရာအချက်အလက်များ, အာရုံခံကိရိယာအချက်အလက်များသို့မဟုတ် တိ ကျသောတွက်ချက်မှုလိုအပ်သည့်အခြားစီးပွားရေးလုပ်ငန်းများအတွက်,

  • ဒေတာတည်ရှိမှုရှိမရှိမှားယွင်းစွာခွဲခြားသတ်မှတ်

  • စီးပွားရေးတရားသဖြင့်စီရင်ဌာနမှယုတ္တိအမှားများ

  • ဒေတာကွဲပြားခြားနားမှုများကိုမှန်ကန်စွာတစ်ပြိုင်တည်းချိန်ကိုက်ခြင်းသို့မဟုတ်နှိုင်းယှဉ်နိုင်ခြင်းမရှိပါ

၎င်းသည်ကုဒ် bug တစ်ခုသာမက စီးပွားရေးလုံခြုံရေးပြ issue နာ ဖြစ်နိုင်သည်။

ဖြေရှင်းချက် - စိတ်ကြိုက်နှိုင်းယှဉ်သည့်ယုတ္တိဗေဒကိုသုံးပါ

PHP သည် array_udiff () ကိုထောက်ပံ့ပေးသည်။

 <?php
function float_compare($a, $b) {
    $epsilon = 0.00001; // တိကျမှန်ကန်မှုသည်းခံမှု
    if (abs($a - $b) < $epsilon) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}

$a = [0.1 + 0.2];
$b = [0.3];

$result = array_udiff($a, $b, 'float_compare');
print_r($result);

output ကို:

 Array
(
)

ဤအချိန်, array_udiff () နှစ်ခုသည်တန်းတူဖြစ်သည့်ပြ problems နာများကြောင့်ဖြစ်ပေါ်လာသောပြ problems နာများကိုရှောင်ရှားခြင်း,

သိကောင်းစရာများ - တသမတ်တည်းတိကျမှန်ကန်မှုကိုသေချာစေရန်နောက်ထပ်နည်းလမ်းတစ်ခု

array_udiff () သို့မဟုတ်စိတ်ကြိုက်လုပ်ဆောင်ချက်များကိုမသုံးနိုင်သည့်အခါ floating point နံပါတ်များကို format လုပ်ရန် "က curv လုပ်ခြင်း" နည်းလမ်းတစ်ခုလည်းရှိသည်။

 $a = array_map(function($v) {
    return round($v, 5);
}, [0.1 + 0.2]);

$b = array_map(function($v) {
    return round($v, 5);
}, [0.3]);

$result = array_diff($a, $b);
print_r($result);

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

အကျဉ်းချုပ်

floating point arrays ကိုသုံးရန် array_diff () ကိုအသုံးပြုသောအခါအထူးဂရုပြုမှုကိုအထူးဂရုပြုသင့်သည်, အထူးသဖြင့်တိကျမှန်ကန်မှုအမှားများအပေါ်သက်ရောက်မှုကိုအထူးဂရုပြုသင့်သည်။ အကယ်. floating-point နံပါတ်များကိုတိုက်ရိုက်နှိုင်းယှဉ်လျှင်၎င်းသည်ယုတ္တိရှိသောအမှားများနှင့်လုံခြုံရေးဆိုင်ရာအန္တရာယ်များကိုပင်ဖြစ်ပေါ်စေနိုင်သည်။ အချက်အလက်တိကျမှန်ကန်မှုကိုသေချာစေရန်အတွက် array_udiff () ကို စိတ်ကြိုက်တိကျသောတိကျမှုနှင့်နှိုင်းယှဉ်လျှင်အသုံးပြုခြင်းသို့မဟုတ်အချက်အလက်များကိုစည်းလုံးညီညွတ်စွာလုပ်ဆောင်ရန်အကြံပြုသည်။

အရေးကြီးသောအချက်အလက်များပါ 0 င်သောစီးပွားရေးလုပ်ငန်းများတွင်မဆိုအသေးစားအမှားအယွင်းများကိုလျစ်လျူရှုသင့်သည်။