Php Serialize, Unserialize ve json_encode, json_decode Kullanımı

Posted by krmylmz on 29 December 2018 Saturday 14:06:09

Merhabalar, uzun zamandır içerik eklemediğimiz farkettim. bunun üzerine php de serialize ve unserialize fonksiyonlarını anlatmak istedim. Bu fonksiyon, array tipindeki değişken verilerinizi, veritabanı yada dosya üzerinde bir text formatında kayıt altına almanıza yarar, serialize encode işlemini unserialize de decode işlemini gerçekleştirir. json_encode ve json_decode fonksiyonlarının yaptığı işlevi yaparlar. serialize json_decode fonksiyonundan daha eski bir fonksiyondur. php 4 sürümlerinde serialize mevcutken json php 5 ve üzeri sürümlerde mevcuttur. Diğer bir konu da performans açısından bakarsak, json encode işleminde daha hızlı ancak decode işleminde unserialize json_decode ye göre daha hızlı işlem görmekte. Bunları da dikkate alarak dilediğiniz encoder fonksiyonunu kullanabilirsiniz.

Örnek verecek olursak,

$veri = array("veri 1","veri 2", "veri 3");
$ecnoded = serialize($veri);
echo $ecnoded;

Kodun çıktısı :

a:3:{i:0;s:6:"veri 1";i:1;s:6:"veri 2";i:2;s:6:"veri 3";}

şeklinde olacaktır. Bu datayı decode etmek için unserialize fonksiyonunu kullanarak, üstteki dizi değişkenin aynısını elde ederiz.

$veri = 'a:3:{i:0;s:6:"veri 1";i:1;s:6:"veri 2";i:2;s:6:"veri 3";}';
$ecnoded = unserialize($veri);
var_dump($ecnoded);

Kodun çıktısı aşağıdaki gibi olacaktır.

 

array(3) {
[0]=>
string(6) "veri 1"
[1]=>
string(6) "veri 2"
[2]=>
string(6) "veri 3"
}

json kullanımıda aynı şekilde olacaktır. tek farkları fonksiyon isimleri.

$veri = array("veri 1","veri 2", "veri 3");
$ecnoded = json_encode($veri);
echo $ecnoded;

json çıktısı :

["veri 1","veri 2","veri 3"]

json decode işlemi

$veri = '["veri 1","veri 2","veri 3"]';
$ecnoded = json_decode($veri);
var_dump($ecnoded);

yine aynı şekilde çıktı,

array(3) {
[0]=>
string(6) "veri 1"
[1]=>
string(6) "veri 2"
[2]=>
string(6) "veri 3"
}


json_decode işlemi esnasında türkçe karakter sorunu yaşıyorsanız,

$ecnoded = json_decode($veri,true);

şeklinde assoc aktifleştirerek, nesneleri ilişkisel bir diziye dönüştürebilirsiniz.