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/>";
}

Php Ders 3 – Veri Tipleri

Php’de, diğer dillerde de olduğu gibi, verinin farklı türleri vardır. Bu veri türlerinin değişik kullanım alanları vardır.

  • Integer: “Tüm Numaralar”
  • Float: “4.2 gibi sayılar”
  • String: “Metinler”
  • Array: “Diziler birden fazla data tiplerini bulundurabilir.”
  • Boolean: “İkili değer sistemidir. True, False gibi.”
  • Constant: “Değiştirilemez sabitlerdir.”
  • Objeler: “OOP sisteminin objeleridir.”

Integer

Sayılardır. Bu verilerle matematiksel işlemler yapılabilir.

<?php
$degisken1 = 5;
$degisken2 = 10;
echo $toplam = $degisken1 + $degisken2;
?>

String

Metinlerdir. Yazı olarak her şey kullanılabilir. İçerisindeki sayılarla matematiksel işlemler yapılamaz. Bu veride toplama işlemi yaparsak yan yana koyma işlemi yapacaktır. Mesela 1+1 yaparsak sonucu 11 olacaktır. String veri içerisinde html kodları yazabiliriz. Bunu html kodlarını yazdırmak için de kullanabiliriz.

<?php
$string = "<p>Merhaba Dünya</p>";
echo $string;
?>

Float

Bu veri tipi ise ondalıklı sayılardır.

<?php
$float = 1.5;
?>

Boolean (Bool)

Sadece yanlış (false) ya da doğru (true) değerleri alabilen veri tipidir. 1 doğru, 0 yanlış, boş yanlış ve verinin içeriği boşluk karakteri bile olsa dolu ise doğru tanımı almaktadır Php’de. Mesela isset() fonksiyonu içine konulan şeyin var olup olmadığını kontrol ederken empty() fonksiyonu ise içinde veri var mı yok mu diye kontrol eder.

<?php
$booltrue = TRUE;
$booltrue2 = 1;
$booltrue3 = "Merhaba Dünya";
$boolfalse = False;
$boolfalse2 = 0;
$boolfalse3 = "";

Constants

Bu veriler değiştirilemez sabitlerdir. Bir defa tanımını yaparsınız ve bir daha o tanımdan başkasına değiştirilemez. İsimleri büyük harf olmak zorundadır.

<?php
define("ISIM", "Erhan");
echo ISIM;
?>

Array

Diziler içerisinde birden fazla veri taşıyabilen bir veri türüdür. İçerisinde istediğimiz sayıda veri koyabiliriz. Değişik tanımlamaları vardır.

<?php
$array = array("Erhan", "Kılıç", 1987, false);

Bir diğer eleman tanımlama yöntemi ise aşağıdaki gibidir. Bu yöntemde en son sıraya veri eklemektedir.

$array[] = "Nasılsınız";

Dizinin içindeki verilere ise anahtarları ile ulaşabiliriz. Dizilerde verilerin yerini temsil eden anahtarlar 0’dan başlar. Mesela ilk dizimizdeki ilk veriye ulaşmak için aşağıdaki gibi hareket ederiz;

<?php
echo $array[0];

Associative Array

Bu dizide ise anahtarları kendimiz belirliyoruz.

<?php
$array = array(
"isim" => "Erhan",
"soyad" => "Kılıç",
"yas" => 28
);
 
echo "İsim: " . $array["isim"] . "<br/>Soyad: " . $array["soyad"];

Sonraki Ders: Php Ders 4 – Operatörler