PHP တွင်ကျွန်ုပ်တို့သည် configuration file ကို version control or rollack ကိုမကြာခဏလိုအပ်သည်။ configuration file ပြောင်းလဲသွားသောအခါကျွန်ုပ်တို့သည် configuration files အသစ်များနှင့်အသစ်အဆန်းဖိုင်အသစ်များနှင့်ကွဲပြားခြားနားမှုများကိုနှိုင်းယှဉ်ကြည့်ရှုနိုင်ပြီး၎င်းအပေါ် မူတည်. ပြန်လည်ထုတ်ယူခြင်းရှိမရှိကိုကျွန်ုပ်တို့နှိုင်းယှဉ်နိုင်သည်။ array_diff_assoc () သည်ဤလုပ်ဆောင်မှုကိုအကောင်အထည်ဖော်ရန်ကျွန်ုပ်တို့အားကူညီနိုင်သည့်အလွန်အသုံးဝင်သောလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။
array_diff_assoc () သည် PHP တွင်အသုံးပြုသော function တစ်ခုဖြစ်ပြီးနှစ်ခုကိုနှိုင်းယှဉ်ရန်။ ၎င်းသည်ခင်းကျင်းမှု၏တန်ဖိုးများကိုနှိုင်းယှဉ်ရုံသာမကခင်းကျင်းခြင်း၏သော့များကိုလည်းနှိုင်းယှဉ်သည်။ ဤလုပ်ဆောင်ချက်သည်ပထမခင်းကျင်းရေးခလုတ်နှင့်မကိုက်ညီသောပထမဆုံးခင်းကျင်းမှုတွင် element အသစ်များပါ 0 င်သော array အသစ်တစ်ခုကိုရရှိစေသည်။
Syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -
array_diff_assoc(array $array1, array $array2) : array
$ array1 : ပထမ ဦး ဆုံးခင်းကျင်း။
$ array2 : ဒုတိယခင်းကျင်း။
Return Value သည် ဒေါ်လာ array1 နှင့် $ array2 key value အတွဲများပါ 0 င်သည့် array တစ်ခုဖြစ်သည်။
ကျွန်ုပ်တို့တွင် configuration files နှစ်ခုရှိသည်ဆိုပါစို့။ တစ်ခုမှာလက်ရှိ configuration file (configuration file) နှင့်အခြားသည်ယခင် configuration file (Old configuration) ဖြစ်သည်။ ဒီ configuration files တွေအကြားကွဲပြားခြားနားမှုတွေကိုနှိုင်းယှဉ်ခြင်းအားဖြင့် configuration ဟောင်းကိုပြန်လှိမ့်ဖို့လိုမလားဆိုတာကျွန်တော်တို့ကိုပြောနိုင်တယ်။
ဤတွင်ရိုးရှင်းသောအကောင်အထည်ဖော်မှုလုပ်ငန်းစဉ်ကိုဤတွင်ဖော်ပြထားသည်။
<?php
// အသစ်ပြင်ဆင်မှု(ဒါဟာလက်ရှိ configuration ကိုယူဆ)
$current_config = [
'site_name' => 'MySite',
'theme' => 'dark',
'timezone' => 'UTC+8',
'debug' => true
];
// configuration အဟောင်း(backup configuration ကိုယူဆ)
$backup_config = [
'site_name' => 'MySite',
'theme' => 'light', // configuration အဟောင်း的主题
'timezone' => 'UTC+8',
'debug' => false // configuration အဟောင်း的debugပုံစံ
];
// 比较အသစ်ပြင်ဆင်မှု与configuration အဟောင်း的差异
$diff = array_diff_assoc($current_config, $backup_config);
// အဆိုပါပြန်လာခြားနားချက်ဗလာမဟုတ်ပါဘူးလျှင်,configuration file ကိုပြောင်းလဲသွားကြောင်းဖော်ပြသည်
if (!empty($diff)) {
echo "configuration file ပြောင်းလဲမှုများ,ခြားနားချက်ကိုအောက်ပါအတိုင်းဖြစ်ပါတယ်:\n";
print_r($diff);
// ဤတွင်ကျွန်ုပ်တို့သည်ထပ်မံဖြည့်စွက်ရန်လိုအပ်သည်ရှိမရှိထပ်မံဆုံးဖြတ်နိုင်သည်
echo "需要回滚到configuration အဟောင်း。\n";
} else {
echo "အဆိုပါ configuration file ကိုမပြောင်းလဲပါဘူး。\n";
}
?>
သတ်မှတ်ချက် configuration file : arry နှစ်ခုကိုသတ်မှတ်ပြီးတစ်ခုမှာလက်ရှိ configuration $ curnontfig နှင့်အခြားတစ်ခုမှာ backup configuration $ backup_config ဖြစ်သည်။
Call Array_diff_assoc () - ဤ configuration files များအကြားကွဲပြားခြားနားမှုများကိုနှိုင်းယှဉ်ရန် array_diff_assoc () ကို အသုံးပြုသည်။
ခြားနားချက်ကိုဆုံးဖြတ်ပါ - ပြန်လည်ရောက်ရှိသည့်ကွဲပြားမှု array $ diff သည် ဗလာမဟုတ်လျှင်လက်ရှိ configuration file နှင့် backup configuration file အကြားခြားနားချက်ရှိသည်ဟုဆိုလိုသည်။
အထက်ပါကုဒ်ကိုဖွင့်ပြီးနောက်, output ကိုခြားနားချက်ကိုအောက်ပါအတိုင်းဖော်ပြလိမ့်မည် -
configuration file ပြောင်းလဲမှုများ,ခြားနားချက်ကိုအောက်ပါအတိုင်းဖြစ်ပါတယ်:
Array
(
[theme] => dark
[debug] => 1
)
需要回滚到configuration အဟောင်း。
ဆိုလိုသည်မှာ အဓိကအကြောင်းအရာ နှင့် debug ၏တန်ဖိုးများသည် configuration files ဟောင်းနှင့်အသစ်များနှင့်ကွဲပြားခြားနားသောကြောင့် Roundback လိုအပ်သည်။
လက်တွေ့ကျသော application များအနေဖြင့် configuration files များတွင်ကွဲပြားခြားနားမှုများကိုရှာဖွေတွေ့ရှိသောအခါကျွန်ုပ်တို့သည် configuration files ဟောင်းများကိုပြန်လည်ထူထောင်ခြင်းဖြင့်ပြန်လှည့်နိုင်သည်။ ဥပမာအားဖြင့်, သင်သည် configuration file သို့ $ backup_config ထဲမှ content များကိုပြန်လည်ရေးနိုင်သည်သို့မဟုတ်ဒေတာဘေ့စ်၌ဗားရှင်းအဟောင်းသို့ပြန်ယူနိုင်သည်။
file_put_contents('config.php', '<?php return ' . var_export($backup_config, true) . ';');
echo "အဆိုပါ configuration file ကိုပြန်လှိမ့်ခဲ့သည်。\n";
Array_diff_assoc () function ကိုမှတစ်ဆင့်ကျွန်ုပ်တို့သည် configuration files နှစ်ခုအကြားကွဲပြားခြားနားမှုများကိုအလွယ်တကူနှိုင်းယှဉ်နိုင်သည်။ ဤနည်းလမ်းကိုအမျိုးမျိုးသောအခြေအနေတွင်ကျယ်ကျယ်ပြန့်ပြန့် အသုံးပြု. အထူးသဖြင့် configuration files များ၏ရှေ့နောက်ညီညွတ်မှုကိုသေချာစေရန်လိုအပ်သည့်အခါတွင်ကျယ်ကျယ်ပြန့်ပြန့်အသုံးပြုနိုင်သည်။