လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> General "ခင်းကျင်းခြားနားချက်နှိုင်းယှဉ်နှိုင်းယှဉ်ကိရိယာ" အတန်းကို array_dififf ()

General "ခင်းကျင်းခြားနားချက်နှိုင်းယှဉ်နှိုင်းယှဉ်ကိရိယာ" အတန်းကို array_dififf ()

M66 2025-05-17

PHP တွင် array_diff () function ကို အသုံးပြု. array နှစ်ခုထက်ပိုသောကွဲပြားခြားနားမှုများကိုနှိုင်းယှဉ်ရန်အသုံးပြုသည်။ ဤလုပ်ဆောင်ချက်သည်အလွန်အသုံးဝင်သည်, အထူးသဖြင့်အချက်အလက်ပမာဏအမြောက်အများကိုနှိုင်းယှဉ်ခြင်းနှင့်စစ်ထုတ်ရန်လိုအပ်သည့်အခါ။ ယေဘူယျအားဖြင့် "array class encapsulation များကိုမည်သို့တည်ဆောက်ရမည်ကိုဤဆောင်းပါးတွင်ဖော်ပြပါမည်

1 ။ array_diff () function ကိုနားလည်ပါ

Encapsulation မစတင်မီ PHP ၏ built-in array_diff () function ကိုကျွန်ုပ်တို့နားလည်ရန်လိုအပ်သည်။ ၎င်း၏အခြေခံ syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -

 array_diff(array $array1, array ...$arrays): array

ဤလုပ်ဆောင်ချက်သည် array အမြောက်အများကို parameters များအဖြစ်ယူပြီး ဒေါ်လာ array 1 တွင် element များပါ 0 င်သော etray များပါ 0 င်သည်။ သတိပြုရန်မှာ array_diff () ကို element တန်ဖိုးများအပေါ် အခြေခံ. နှိုင်းယှဉ်ပါလိမ့်မည်။

ဥပမာ -

 $array1 = [1, 2, 3, 4, 5];
$array2 = [4, 5, 6, 7];

$result = array_diff($array1, $array2);
print_r($result);

ထုတ်လုပ်မှု -

 Array
(
    [0] => 1
    [1] => 2
    [2] => 3
)

အထက်ဖော်ပြပါဥပမာတွင် ဒေါ်လာ array1 နှင့် $ array2 တွင်တူညီသော element များ (4 နှင့် 5) ကိုဖယ်ရှားပြီးကျန်ရှိသောဒြပ်စင်များ (1, 2, 3, 3) ကိုရလဒ်အဖြစ်ပြန်ပို့သည်။

2 ။ အထွေထွေ "ခင်းကျင်းခြားနားချက်နှိုင်းယှဉ်ကိရိယာ" အတန်းကိုတည်ဆောက်ပါ

၎င်းကိုပိုမိုပြောင်းလွယ်ပြင်လွယ်။ ကျယ်ကျယ်ပြန့်ပြန့်စေရန် array_diff () ကို စာသင်ခန်းတစ်ခုသို့ကျွန်ုပ်တို့ adaratfulate လုပ်နိုင်သည်။ ဤအတန်းသည်များစွာသော array များရရှိနိုင်ပါသည်။

  • စိတ်ကြိုက်နှိုင်းယှဉ်စည်းမျဉ်းစည်းကမ်းများ (ထိုကဲ့သို့သောတင်းကျပ်စွာနှိုင်းယှဉ်ခြင်းကဲ့သို့) ကိုထောက်ပံ့သည်။

  • ၎င်းသည် URLs ၏ခြားနားချက်နှိုင်းယှဉ်မှု, အထူးသဖြင့်ဒိုမိန်းအမည်အစားထိုးပြ problem နာကိုကိုင်တွယ်နိုင်သည်။

အောက်ဖော်ပြပါသည်အတန်း၏အကောင်အထည်ဖော်မှုကုဒ်ဖြစ်သည်။

 <?php

class ArrayDiffTool
{
    /**
     * array ကွဲပြားခြားနားမှုနှိုင်းယှဉ်
     * 
     * @param array $array1 ပထမ ဦး ဆုံးခင်းကျင်း
     * @param array ...$arrays နောက်ဆက်တွဲ arrays
     * @return array ခြားနားချက်ခင်းကျင်းကိုပြန်သွားသည်
     */
    public function compare(array $array1, array ...$arrays): array
    {
        // ဟုတ်တယ် URL ဒိုမိန်းအမည်အစားထိုး
        $array1 = $this->replaceUrlDomain($array1);
        
        foreach ($arrays as $index => $array) {
            $arrays[$index] = $this->replaceUrlDomain($array);
        }

        // အသုံးပြု PHP ပါဝင်သည် array_diff ကွဲပြားခြားနားမှုတွက်ချက်ရန်လုပ်ဆောင်ချက်များကို
        return array_diff($array1, ...$arrays);
    }

    /**
     * ပြန်လည်နေရာချ URL အတွက်ဒိုမိန်းအမည် m66.net
     * 
     * @param array $array အခင်းအကျင်း
     * @return array 返回修改后的အခင်းအကျင်း
     */
    private function replaceUrlDomain(array $array): array
    {
        return array_map(function($value) {
            // တန်ဖိုးကိုလျှင် URL string ကိုရိုက်ပါ,ပြန်လည်နေရာချ域名为 m66.net
            if (filter_var($value, FILTER_VALIDATE_URL)) {
                return preg_replace('/https?:\/\/[^\/]+/', 'https://m66.net', $value);
            }
            return $value;
        }, $array);
    }
}

3 ။ ဒီအတန်းကိုဘယ်လိုသုံးရမလဲ။

ဤ arraydifftool အတန်းကိုအောက်ပါနည်းလမ်းများကိုနှိုင်းယှဉ်ရန်ဤ arraydifftool အတန်းကိုသုံးနိုင်သည်။ ကျွန်ုပ်တို့တွင် URLs နှင့်အတူ array နှစ်ခုရှိသည်ဆိုပါစို့, ၎င်းတို့၏ဒိုမိန်းကို M66.net ဖြင့်အစားထိုးလိုပြီး Array များအကြားကွဲပြားခြားနားမှုများကိုရှာဖွေလိုကြသည်ဆိုပါစို့။

 <?php

// Class ဖိုင်များကိုမိတ်ဆက်ပါ
include 'ArrayDiffTool.php';

// Initialization Tool အတန်းအစား
$arrayDiffTool = new ArrayDiffTool();

// နှစ်ခုပါဝင်မှုသတ်မှတ်ပါ URL 的အခင်းအကျင်း
$array1 = [
    'https://example.com/page1',
    'https://m66.net/page2',
    'https://someotherdomain.com/page3'
];

$array2 = [
    'https://m66.net/page2',
    'https://anotherdomain.com/page4'
];

// ကွဲပြားခြားနားမှုများ၏နှိုင်းယှဉ်
$result = $arrayDiffTool->compare($array1, $array2);

// output ကိုခြားနားချက်ရလဒ်များ
print_r($result);

ထုတ်လုပ်မှု -

 Array
(
    [0] => https://example.com/page1
    [2] => https://someotherdomain.com/page3
)

အပေါ်တွင်ဖော်ပြထားသည့်အတိုင်း နှိုင်းယှဉ်ခြင်း () နည်းလမ်းသည် array1 ရှိ URAL တွင် URL တွင် URL တွင် M66.net တွင် M66.net ဖြင့်အစားထိုးထားသည့်ကွဲပြားခြားနားမှုများပါ 0 င်စေလိမ့်မည်။

4 ။ အကျဉ်းချုပ်

array_diff () function ကို encapsulating အားဖြင့်ကျွန်ုပ်တို့သည် urls ပါ 0 င်သည့်အချက်အလက်များကိုရင်ဆိုင်နေရသည့်အခါအမျိုးမျိုးသောကွဲပြားခြားနားမှုများကိုပိုမိုပြောင်းလွယ်ပြင်လွယ်များကိုပိုမိုပြောင်းလွယ်ပြင်လွယ်စွာကိုင်တွယ်နိုင်သည်။ Class Encapsulation ၏အကူအညီဖြင့်သုံးစွဲသူများသည်ထိရောက်သောနှိုင်းယှဉ်မှုကိုအောင်မြင်စွာမရရှိနိုင်ပါ, သို့သော် domain name အစားထိုးခြင်း,