PHP Development တွင်အထူးသဖြင့်ကွန်ယက်မှုတ်ထုတ်လွှင့်ခြင်းသို့မဟုတ်ဖိုင်သိုလှောင်မှုနှင့်သက်ဆိုင်သည့်အခါအချက်အလက်များကို encode လုပ်ရန်နှင့် decode လုပ်ရန်လိုအပ်သည်။ JSON_DECODED () သည် JSON အချက်အလက်များကို PHP Array သို့မဟုတ်အရာဝတ်ထုများသို့ခွဲခြမ်းစိတ်ဖြာခြင်းကို php array များသို့မဟုတ်အ ရာ ဝတ်ထုများသို့ခွဲခြမ်းစိတ်ဖြာခြင်းအတွက်ဘုံလုပ်ဆောင်မှုတစ်ခုဖြစ်သည်။ JSON_DECode () ကို Pack ကို အသုံးပြု. Binary Data သို့ရရှိသောရရှိသောရလဒ်များကိုမည်သို့စီစဉ်ရမည်ကိုဤဆောင်းပါးတွင်အသေးစိတ်ရှင်းပြပါလိမ့်မည်။
JSON_Decode (string $ json, bool $ accel = true)
JSON string ကိုခွဲခြမ်းစိတ်ဖြာခြင်းသည်ဒုတိယ parameter သည် မှန် သည် ။
ထုပ်ပိုး (string $ format, ရောနှော $ args ... )
parameters တွေကို format ဇာတ်ကောင်အပေါ်အခြေခံပြီး binary strings အဖြစ် parameters တွေကိုထုပ်ပိုး။ ပုံစံဇာတ်ကောင်တစ်ခုချင်းစီရဲ့ parameter သည်၏အမျိုးအစားနှင့်အရှည်ဆုံးဖြတ်သည်။
အောက်ဖော်ပြပါ JSON အချက်အလက်များရှိသည်ဆိုပါစို့:
{
"id": 123,
"temperature": 36.5,
"status": 1
}
JSON_Decode () ကို သုံးရန်အတွက်၎င်းကို array ထဲသို့ပြောင်းလဲရန်အတွက်၎င်းကိုအဆင်ပြေသောကွန်ရက်ထုတ်လွှင့်ရန်အတွက် binary data ထဲသို့ထည့်ရန် Pack () ကို အသုံးပြုရန်မျှော်လင့်ပါသည်။
<?php
// JSON အချက်များ
$json = '{"id":123,"temperature":36.5,"status":1}';
// အသုံးပြု json_decode Associative Array အဖြစ်ဆုံးဖြတ်ပါ
$data = json_decode($json, true);
// ခွဲခြမ်းစိတ်ဖြာခြင်းရလဒ်များကိုအတည်ပြုပါ
// var_dump($data);
// 假设အချက်များ格式如下:
// id: 32လက်မှတ်မထိုး integer (N)
// temperature: floating အမှတ်နံပါတ်,32ယူနစ်တိကျမှန်ကန်မှု (f)
// status: 8လက်မှတ်မထိုး integer (C)
// မှတ်သား:pack မပံ့ပိုးပါ 64位floating အမှတ်နံပါတ်格式,只能အသုံးပြု单精度或双精度(d)
// ဒီမှာတစ်ခုတည်းတိကျမှုကိုရွေးချယ်ပါ(f)
$binary = pack(
'NfC', // ဇာတ်ကောင် format:N - 32bit endianness အတွက်လက်မှတ်မထိုးသည့်ကိန်းဂဏန်းများ, f - floating အမှတ်နံပါတ်, C - 8လက်မှတ်မထိုး integer
$data['id'],
$data['temperature'],
$data['status']
);
// 输出二进制အချက်များ的十六进制表示,ကြည့်ရှုရန်လွယ်ကူသည်
echo bin2hex($binary);
?>
N သည် 32-bit-endian Integer (Network Enterian Integer (Network endian) ကိုကိုယ်စားပြုသည်။
f သည် 32-bit တစ်ခုတည်း - တိကျသောရေပေါ်အမှတ်နံပါတ်ကိုကိုယ်စားပြုသည်။
C သည် 8-bit IFFIGNED Integer ကိုကိုယ်စားပြုသည်။
ဤနေရာတွင် ID ကို Network Enterian Integer တစ်ခုအနေဖြင့်ထုပ်ပိုးပြီး အပူချိန်သည် floating point နံပါတ်ဖြစ်ပြီး status သည် byte ဖြစ်သည်။
ထုပ်ပိုးခြင်း၏မှန်ကန်မှုကိုအတည်ပြုရန်သင် ဖြည့်စွက် () function ကိုဖြည့်ဆည်းပေးနိုင်သည်။
<?php
// 之前打包后的二进制အချက်များ
$binary = pack('NfC', 123, 36.5, 1);
// ဘော့ပီတာပိတ်ဆို့ခြင်း,ဇာတ်ကောင် format必须与打包时对应
$unpacked = unpack('Nid/ftemperature/Cstatus', $binary);
print_r($unpacked);
?>
ထုတ်လုပ်မှု -
Array
(
[id] => 123
[temperature] => 36.5
[status] => 1
)
JSON တွင်ရှုထောင့်အမျိုးမျိုးသို့မဟုတ်ကြိုးများပါ 0 င်ပါကသင်ပထမ ဦး ဆုံး binary format ကိုဒီဇိုင်းဆွဲရန်လိုအပ်သည်။ ဘုံအလေ့အကျင့်များမှာ:
fixed အရှည်အကွက်များကိုပုံသေပုံစံဖြင့်ထုပ်ပိုးထားသည်။
ကြိုးများ ('n', strlen ('strlen) ကဲ့သို့သောအရှည် + အကြောင်းအရာကိုထုပ်ပိုးထားသည်။ $ str ;
ခင်းကျင်းထုပ်ပိုးကွင်းဆက်။
ဥပမာ -
<?php
$json = '{"users":[{"id":1,"name":"Alice"},{"id":2,"name":"Bob"}]}';
$data = json_decode($json, true);
$binary = '';
foreach ($data['users'] as $user) {
$id = $user['id'];
$name = $user['name'];
$nameLen = strlen($name);
$binary .= pack('N', $id); // id 4ဒရယ်
$binary .= pack('N', $nameLen); // အမည်အရှည် 4ဒရယ်
$binary .= $name; // Name String
}
echo bin2hex($binary);
?>
JSOR_DECODED () JSOSS strings php arrays သို့ခွဲထုတ်;
Custom format အညီ Pack () ဒေတာများကို binary သို့ထုပ်ပိုးထားသည်။
ပုံစံကိုဒီဇိုင်းပြုလုပ်ရန်လိုအပ်သည်, လယ်ကွင်းအရှည်နှင့်အမျိုးအစားကိုစဉ်းစားရန်လိုအပ်သည်, အထူးသဖြင့် string သည်၎င်း၏ကိုယ်ပိုင်အလျင်အမြန်သတင်းအချက်အလက်လိုအပ်သည်။
ဒေတာ၏မှန်ကန်မှုကိုအတည်ပြုရန် unpack () နှင့်အတူပေါင်းစပ်။
Pack -functions ၏အသေးစိတ်ပုံစံအမျိုးမျိုးအသေးစိတ်အချက်အလက်များအတွက် တရားဝင် PHP စာရွက်စာတမ်းများကို ဖတ်ရှုပါ။