Posts

PHP And JSON

To explain the relationship between PHP and Json and how to use Json in PHP, let’s start with “What’s Json” on top of it.

In programming, there is a need for data exchange between different platforms. For example, you might want to pull out the latest posts from any social platform and use them in your own project. There is a need to share between platforms for such transactions, and some technologies have been developed for this. For example, one of them is XML technology, but XML is not well used with Javascript. Json is preferred because it is compatible with Javascript.

The data in Json is in the form of array and object.

Object

It starts with “{“ and ends with “}”. The data is written in “Key” and “Data”. Sample;

{
    "name": "Erhan",
    "surname": "Kılıç"
}

Array

It starts with “[“ and ends with “]”. The data in it is written only as “Data”. Keys are automatically identified. Sample;

[
    "Erhan", "Kılıç"
]

Both can be used together in Json as desired. Sample;

{
    "type": "book",
    "genre": "novel",
    "products": [
        {"name": "Ihtiyar Kemanci", "author": "Nihat Genc"},
        {"name": "Su Cilgin Turkler", "author": "Turgut Ozakman"},
        {"name": "Kar", "author": "Orhan Pamuk"}
    ]
}

The most important reason why Json is preferred is that the object and array structure in Javascript are exactly the same. As an example, you will also notice when we try to do it in Javascript.

Json Functions in PHP

In PHP, Json-related operations can be used for the following reason; to use it in Javascript or libraries like jQuery, AngularJs on our own site, to share data with other platforms and to create api. We can use the data that we extracted with Json from anywhere in our php application.

If we pull the json data from elsewhere, we need to be careful; if we do not use the following functions, php will treat the json data as a string value. In fact, everywhere perceives json data as a string, unless the necessary markers are used.

json_encode();

This function allows you to print the data as Json. Sample Usage;

<?php
$array = [
    "type"=> "book",
    "genre"=> "novel",
    "products"=> [
        ["name"=> "Ihtiyar Kemanci", "author"=> "Nihat Genc"],
        ["name"=> "Su Cilgin Turkler", "author"=> "Turgut Ozakman"],
        ["name"=> "Kar", "author"=> "Orhan Pamuk"]
    ]
];
$json = json_encode($array);
echo $json;

json_decode();

This function allows us to decode the Json data we extract from a place and use it in our php software. We can access the data in Json as accessing the data on object. In the following example, I’ll create json data as string. Because when we extract Json data from outside, we will get string data in the same way. Sample;

<?php
$json = '{
    "type": "book",
    "genre": "novel",
    "products": [
        {"name": "Ihtiyar Kemanci", "author": "Nihat Genc"},
        {"name": "Su Cilgin Turkler", "author": "Turgut Ozakman"},
        {"name": "Kar", "author": "Orhan Pamuk"}
    ]
}';
$data = json_decode($json);
echo $data->type;
echo $data->genre;
foreach($data->products as $product){
    var_dump($product);
    echo "<br/>";
}

If you add true as a second parameter in the function, the data will be stored as an array rather than as an object, and our access will change accordingly. Sample;

<?php
$json = '{
    "type": "book",
    "genre": "novel",
    "products": [
        {"name": "Ihtiyar Kemanci", "author": "Nihat Genc"},
        {"name": "Su Cilgin Turkler", "author": "Turgut Ozakman"},
        {"name": "Kar", "author": "Orhan Pamuk"}
    ]
}';
$data = json_decode($json, true);
echo $data["type"];
echo $data["genre"];
foreach($data["products"] as $product){
    var_dump($product);
    echo "<br/>";
}

PHP ve Json

phpjsonPHP ve Json ikilisi arasındaki ilişkiyi ve Json’un PHP’de kullanımını anlatmak için öncelikle Json nedir onun üzerinde duralım.

Programlamada farklı platformlar arasında veri alışverişi ihtiyacı vardır. Mesela bir sosyal platformdan son paylaşımları çekip kendi projenizde kullanmak isteyebilirsiniz. Bu tür işlemler için platformlar arasında bir paylaşım olması lazımdır. Bu paylaşım için bazı teknolojiler geliştirilmiştir. Mesela bunlardan birisi XML teknolojisidir. Fakat XML, Javascript ile beraber iyi kullanılamamaktadır. İşte burada Json, Javascript ile uyumlu olduğundan çok tercih edilmektedir.

Json içerisindeki veriler her programlamada bulunan dizi ve obje şeklindedir.

Object

“{“ ile başlar ve “}” ile biter. İçerisine veriler “Anahtar” ve “Veri” şeklinde yazılır. Örnek;

{
 "name": "Erhan",
 "surname": "Kılıç"
}

Dizi

“[“ ile başlar ve “]” ile biter. İçerisindeki veriler sadece “Veri” şeklinde yazılır. Örnek;

[
 "Erhan", "Kılıç"
]

Json içerisinde ikisi bir arada istenildiği gibi kullanılabilir. Örnek;

{
 "tip": "kitap",
 "tur": "roman",
 "urunler": [
 {"ad": "Ihtiyar Kemanci", "yazar": "Nihat Genc"},
 {"ad": "Su Cilgin Turkler", "yazar": "Turgut Ozakman"},
 {"ad": "Kar", "yazar": "Orhan Pamuk"}
 ]
}

Json’un tercih edilmesinin en önemli sebebi Javascript’deki obje ve dizi yapısının tamamen aynı olmasıdır. Örnek olarak Javascript‘te de yapmaya çabaladığımızda siz de farkedeceksiniz.

PHP’de Json Fonksiyonları

Php’de Json ile ilgili işlemler şu şekilde yapılabilir. Kendi sitemizde Javascript ya da jQuery, AngularJs gibi kütüphanelerinde kullanmak için, başka platformlarla veri paylaşımında bulunup api oluşturmak için verileri Json formatında ekrana yazdırabiliriz. Başka bir yerden Json ile çektiğimiz veriyi php uygulamamızda kullanmak için kullanabiliriz.

Dikkat etmemiz gereken şey şudur. Eğer aşağıdaki fonksiyonları kullanmazsak bir string değer gibi algılayacağından içerideki verilere erişmek hayli zahmetli olacaktır.

json_encode()

Bu fonksiyon istediğimiz veriyi Json olarak yazdırmamızı sağlar. Örnek Kullanım;

$dizi = array(
 "tip"=> "kitap",
 "tur"=> "roman",
 "urunler"=> array(
 array("ad"=> "Ihtiyar Kemanci", "yazar"=> "Nihat Genc"),
 array("ad"=> "Su Cilgin Turkler", "yazar"=> "Turgut Ozakman"),
 array("ad"=> "Kar", "yazar"=> "Orhan Pamuk")
 )
);
$json = json_encode($dizi);
echo $json;

json_decode()

Bu fonksiyon ise bir yerden çektiğimiz Json veriyi decode ederek php yazılımımız içerisinde kullanmamızı sağlar. İçerideki verilere ise objedeki bir veriye ulaşır gibi ulaşabiliriz. Aşağıdaki örnekte Json veriyi bir string veri olarak oluşturuyorum. Çünkü dışarıdan Json veri çektiğimizde string bir veri olarak gelecektir aynı şekilde. Örnek;

$json ='{
 "tip": "kitap",
 "tur": "roman",
 "urunler": [
 {"ad": "Ihtiyar Kemanci", "yazar": "Nihat Genc"},
 {"ad": "Su Cilgin Turkler", "yazar": "Turgut Ozakman"},
 {"ad": "Kar", "yazar": "Orhan Pamuk"}
 ]
}';
$veri = json_decode($json);
echo $veri->tip;
echo $veri->tur;
foreach($veri->urunler as $urun){
 echo vardumb($urun);
 echo "<br/>";
}

Fonksiyon içerisinde ikinci bir parametre olarak true eklersek obje olarak değil direk dizi olarak kaydecektir ve erişimimiz de bu şekilde değişecektir. Örnek;

$json ='{
 "tip": "kitap",
 "tur": "roman",
 "urunler": [
 {"ad": "Ihtiyar Kemanci", "yazar": "Nihat Genc"},
 {"ad": "Su Cilgin Turkler", "yazar": "Turgut Ozakman"},
 {"ad": "Kar", "yazar": "Orhan Pamuk"}
 ]
}';
$veri = json_decode($json, true);
echo $veri[tip];
echo $veri[tur];
foreach($veri[urunler] as $urun){
 echo vardumb($urun);
 echo "<br/>";
}