လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> အဘယ်ကြောင့် Serialized ဒေတာဖတ်လို့မရဘူး? ဘယ်လိုကိုင်တွယ်ရမလဲ။

အဘယ်ကြောင့် Serialized ဒေတာဖတ်လို့မရဘူး? ဘယ်လိုကိုင်တွယ်ရမလဲ။

gitbox 2025-05-27

PHP တွင် Serialize () function ကို PHP variable ကိုသိုလှောင်ထားသောသို့မဟုတ်လွှဲပြောင်းကြိုးများအဖြစ်ပြောင်းလဲရန်အသုံးပြုသည်။ ၎င်းကိုဒေတာများကိုဒေတာဘေ့စ်သို့သိမ်းဆည်းရန်သို့မဟုတ်ကွန်ယက်တစ်ခုသို့လွှဲပြောင်းရန်အသုံးပြုလေ့ရှိသည်။ သို့သော်လူအများစုကပြန်လာသော string သည်အလိုအလျောက်အလိုအလျောက်မဟုတ်ဘဲ Serialize () function ကိုအသုံးပြုပြီးနောက်နားလည်ရန်ခက်ခဲခြင်းသို့မဟုတ်နားလည်ရန်ခက်ခဲကြောင်းတွေ့ရှိရသည်။

1

Serialize () ကိုပြန်လည်ရရှိထားသော string သည် PHP အရာဝတ်ထုသို့မဟုတ်ခင်းကျင်းမှု၏မူလဖွဲ့စည်းပုံမှ encoded ဖြစ်သည်။ ဤ string သည်လူ့ဖော်ရွေပုံစံမဟုတ်ပါ, ဒါကြောင့်ရလဒ်ကတော့အဓိပ္ပါယ်မဲ့ဇာတ်ကောင်တွေအများကြီးနဲ့တူတယ်။

ဥပမာအားဖြင့်, ရိုးရှင်းသောခင်းကျင်းအတွက်:

 $array = ['name' => 'Alice', 'age' => 25];
$serialized = serialize($array);
echo $serialized;

output သည်ဤကဲ့သို့သော string တစ်ခုဖြစ်နိုင်သည်။

 a:2:{s:4:"name";s:5:"Alice";s:3:"age";i:25;}

PHP ကိုခွဲခြမ်းစိတ်ဖြာနိုင်သော်လည်း developer များအနေဖြင့်၎င်းကိုနားလည်ရန်အပိုအားထုတ်မှုအချို့လိုအပ်သည်။ ၎င်းတွင်အချက်အလက်အမျိုးအစားများနှင့်သော့ချက်တန်ဖိုးအတွဲများ၏အသေးစိတ်အချက်အလက်များပါ 0 င်သည်။ သို့သော်တိုက်ရိုက်ဖတ်နိုင်စွမ်းမရှိပါ။

2 ။ Serialize () output ကို format) ၏ဖွဲ့စည်းမှု

ဒီ output string ရဲ့အစိတ်အပိုင်းတွေကိုအသေးစိတ်လေ့လာကြည့်ရအောင်။

  • A: 2 တွင်အတွင်းရှိဒြပ်စင်နှစ်ခုရှိသော array ကိုဆိုလိုသည်။

  • S: 4: "NAME" သည်အရှည် 4 ခုနှင့် "name" ၏တန်ဖိုးကိုကိုယ်စားပြုသည်။

  • S: 5- 5. "အဲလစ်" သည်အရှည် 5 ခုနှင့် "အဲလစ်" ၏တန်ဖိုးကိုကိုယ်စားပြုသည်။

  • S: 3: "အသက်အရွယ်" သည် အရှည် 3 ခုနှင့် "အသက်" ၏တန်ဖိုးနှင့်အတူ string ကိုကိုယ်စားပြုသည်။

  • i: 25 က 25 ရဲ့တန်ဖိုးကိုကိုယ်စားပြုတယ်။

ဤအချက်အလက်များကိုကျွန်ုပ်တို့သိသော်လည်း၎င်းသည်အလွန်ရှည်လျားပြီးမအောင်မြင်ပါ။

3 ။

3.1 Var_Export () function ကိုအသုံးပြုခြင်း

အချက်အလက်များကိုပိုမိုဖတ်ရှုနိုင်သည့်ပုံစံဖြင့်ဒေတာများကိုဆပ်ရန် PHP သည် varixport () function ကိုထောက်ပံ့ပေးသည်။ ၎င်းသည် variable ၏ဖွဲ့စည်းပုံကိုပြသသည်။ ဒီ output ကို serialize ထက်နားလည်ရန်ပိုမိုလွယ်ကူသည်။ ဥပမာအားဖြင့်:

 $array = ['name' => 'Alice', 'age' => 25];
echo var_export($array, true);

အောက်ပါအတိုင်း output ကို:

 array (
  'name' => 'Alice',
  'age' => 25,
)

ဤပုံစံသည်ခင်းကျင်းမှု၏အဓိကတန်ဖိုးအတွဲများကိုရှင်းရှင်းလင်းလင်းဖော်ပြပြီးနားလည်ရန်ပိုမိုလွယ်ကူစေသည်။

3.2 JSON format ကိုအသုံးပြုခြင်း

အကယ်. သင်သည် Serialized ဒေတာများကိုလက်ဝါးကပ်တိုင်ဘာသာစကားလိုက်ဖက်မှုနှင့်ကြည့်ရှုရန်ပိုမိုလွယ်ကူစေလိုပါက debug ည့်သည်ကိုသုံးရန် JSONS_CETDED () function ကိုသုံးနိုင်သည်။ JSON format သည်လူသားတို့ဖော်ရွေမှုမရှိရုံသာမကခေတ်သစ်အက်ပလီကေးရှင်းများတွင်ဒေတာဖလှယ်မှုတွင်ကျယ်ပြန့်စွာအသုံးပြုသည်။

 $array = ['name' => 'Alice', 'age' => 25];
echo json_encode($array, JSON_PRETTY_PRINT);

အောက်ပါအတိုင်း output ကို:

 {
    "name": "Alice",
    "age": 25
}

ဤနည်းအားဖြင့်ဒေတာများသည်ဖတ်ရန်မလွယ်ကူပါ, သို့သော်မတူညီသောပရိုဂရမ်ဘာသာစကားများသို့မဟုတ်စနစ်များအကြားအလွယ်တကူကူးစက်နိုင်သည်။

3.3 တတိယပါတီစာကြည့်တိုက်များအသုံးပြုခြင်း

အကယ်. သင်သည်ပိုမိုရှုပ်ထွေးသောဆိုင်းငံ့ထားသည့်လုပ်ဆောင်ချက်များကိုပိုမိုလိုချင်ပါကသို့မဟုတ် serialized data format များကိုစိတ်ကြိုက်ပြုလုပ်လိုပါက third-party library ကို သုံး. စဉ်းစားနိုင်သည်။ ဥပမာအားဖြင့် Symfony Vardumper သည်ပိုမိုကောင်းမွန်သောအချက်အလက်တင်ဆက်မှုကိရိယာကိုပိုမိုကောင်းမွန်စွာဖတ်နိုင်သည်။

 use Symfony\Component\VarDumper\VarDumper;

$array = ['name' => 'Alice', 'age' => 25];
VarDumper::dump($array);

ဤသည်ဖွဲ့စည်းပုံအခြေခံဥပဒေကိုဖတ်ရန်လွယ်ကူသောပုံစံချခြင်း,

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

PHP ၏ serialize () လုပ်ဆောင်ချက်သည်အချက်အလက်များကိုသိုလှောင်ထားနိုင်သောပုံစံသို့ပြောင်းလဲနိုင်သော်လည်းထုတ်လုပ်သောကြိုးများသည်များသောအားဖြင့်လူသားများအတွက်ဖော်ရွေမှုမရှိပါ။ ဤပြ problem နာကိုဖြေရှင်းရန်အောက်ပါနည်းလမ်းများကိုသုံးနိုင်သည်။

  • ပိုပြီးထိုးထွင်းသိမြင်နိုင်သော PHP ကုဒ် format ကို output လုပ်ရန် var_export () ကို သုံးပါ။

  • JSONDode () ကို သုံးရန် JSONTode ကိုသုံးရန်,

  • ပိုမိုရင်းနှီးဖော်ရွေသော Debug ထုတ်လုပ်မှုထုတ်လုပ်ရန် Symfony Vardoumper ကဲ့သို့သောတတိယပါတီစာကြည့်တိုက်များကိုအသုံးပြုပါ။

ဤနည်းလမ်းများမှတဆင့်ဒေတာ display method သည် developer များ၏လိုအပ်ချက်နှင့်အညီပိုမိုများပြားကြောင်းသေချာစေနိုင်သည်။