Konular

PHP Dizilerini, JSON ile JavaScripte json_encode ile Göndermek

PHP json_encode işlevi, kendisine aktarılan verileri bir JSON dizesine çevirir ve daha sonra bir JavaScript değişkenine gönderilebilir. Bu yazıda tek boyutlu JavaScript dizi örneği gösteriliyor.

PHP Dizilerini, JSON ile JavaScripte json_encode ile Göndermek

PHP json_encode işlevi, burada indexlenmiş bir diziyle gösterdiğimiz gibi, kendisine verilen değerin JSON eşdeğerini içeren bir dize döndürür:  

<?php
$ar = array('apple', 'orange', 'banana', 'strawberry');
echo json_encode($ar); // ["apple","orange","banana","strawberry"]
?>

Yukarıdaki gibi bir  JSON string çıktısını json_encode ile bir JavaScript değişkenine aşağıdaki gibi aktarabilirsiniz:  

<script type="text/javascript">
// pass PHP variable declared above to JavaScript variable
var ar = <?php echo json_encode($ar) ?>;
</script>

 

Sayısal olarak indexlenmiş bir PHP dizisi, JSON dizesindeki bir dizi değişmezine çevrilir. Dizinin Obje olarak çıktısının alınmasını istiyorsanız bir JSON_FORCE_OBJECT seçeneği kullanılabilir:  

<?php
echo json_encode($ar, JSON_FORCE_OBJECT);
// {"0":"apple","1":"orange","2":"banana","3":"strawberry"}
?>

  JSON dizesinin, okumayı zorlaştıracak beyaz boşluk içermediğine dikkat edin. JSON çıktısını biçimlendirmek için bir JSON_PRETTY_PRINT seçeneği [1] kullanılabilir. Aşağıdaki ilişkilendirilebilir dizi örneğinde gösterilmiştir.

Sayısal Olarak Dizinlenmiş Dizi Örneği

Bu örnek, dize, sayısal, boole ve null değerlerden oluşan sayısal olarak indexlenmiş bir PHP dizisini json_encode'a geçirmeyi gösterir. Json_encode çıktısını bir JavaScript değişkenine yansıtıyoruz ve sonuç bir dizi değişmezidir:  

<?php
$ar = array('apple', 'orange', 1, false, null, true, 3 + 5);
?>
<script type="text/javascript">
var ar = <?php echo json_encode($ar) ?>;
// ["apple","orange",1,false,null,true,8];
// access 4th element in array
alert( ar[3] ); // false
</script>

  Dizinin öğelerine erişimi göstermek için bir uyarı kullanırız. Veri türlerinin korunduğuna, eski moda yaklaşımla ise dizgilere dönüştürüldüğüne dikkat edin.

İlişkisel Dizi Örneği

Bu örnek, json_encode kullanılarak JavaScript'e ilişkilendirilebilir bir PHP dizi çıktısını gösterir. PHP'nin ilişkilendirilebilir dizisinin JavaScript'te nesne değişmezine (Literal) dönüştüğüne dikkat edin:   

<?php
$book = array(
    "title" => "JavaScript: The Definitive Guide",
    "author" => "David Flanagan",
    "edition" => 6
);
?>
<script type="text/javascript">
var book = <?php echo json_encode($book, JSON_PRETTY_PRINT) ?>;
/* var book = {
    "title": "JavaScript: The Definitive Guide",
    "author": "David Flanagan",
    "edition": 6
}; */
alert(book.title);
</script>

Çıktıyı okunabilir bir biçimde görüntülemek için JSON_PRETTY_PRINT seçeneğini json_encode için ikinci argüman olarak kullanıyoruz.

Yukarıda belirtilen uyarı ile gösterildiği gibi nokta sözdizimini veya köşeli ayraç sözdizimi: kitap ['başlık'] kullanarak nesne özelliklerine erişebilirsiniz.

Peki ya JSON.parse ?

Belki de bu örnekteki sonuca JavaScript'in JSON.parse öğesinin uygulanmadığını fark ettiniz. JavaScript tarafında bir ayrıştırıcı aracılığıyla json_encode sonuçlarını çalıştırmak her zaman gerekli olmasa da, genellikle bunu yapmak isteyeceksiniz. JSON.parse'nin ne zaman ve nasıl kullanılacağı hakkında daha fazla bilgi edinin.

PHP’de JSON Fonksiyonları

PHP bize JSON ile ilgili 2 fonksiyon sunuyor.. Bunların ilki json_encode()yani bir json formatı dönüştürücüsü ve ikincisi ise json_decode() yani bir json formatı çözücüsü.. Zaten temelde json işlemi içinde bu 2 fonksiyon yeterlidir.

json_encode()

Bir dizi ifadeyi json formatına dönüştürür.. Küçük bir örnek ile kullanımını görelim;

$array = array(
    "kadi" => "tayfun erbilen",
    "sifre" => "123456"
);
$json = json_encode($array);

echo $json;
   

Bu örneğin çıktısı aşağıdaki gibi olacaktır;

{
    kadi: "tayfun erbilen,
    sifre: "
123456"
}
 
 
 
 

Bu fonksiyona ait birde 2. parametre vardır ancak zorunlu değildir.. 2. parametre değerleri parse etmek için kullanılan tip atamalarıdır.. Sırasıyla aşağıda inceleyelim;

JSON_HEX_TAG
Bütün < ve > karakterleri u003C ve u003E karakterlerine dönüştürülürler.

JSON_HEX_AMP
Bütün & karakterleri u0026 karakterlerine dönüştürülürler.

JSON_HEX_APOS
Bütün ‘ karakterleri u0027 karakterlerine dönüştürülürler.

JSON_HEX_QUOT
Bütün “ karakterleri u0022 dönüştürülürler.

JSON_FORCE_OBJECT
İlişkisel olmayan dizi kullanıldığında çıktıların dizi yerine nesne olmasını sağlar.

json_decode()

JSON formatındaki veriyi çözer ve php’de kullanabileceğimiz hale getirir.. Yapısal olarak obje ve dizi halinde çevrilir. 3 parametre alır ancak sadece ilk parametre zorunludur. Bir örnek ile daha anlaşılır hale getirelim;

$json = '{"kadi" : "tayfun erbilen", "sifre" : "123456"}';
var_dump( json_decode($json) );
   

Yani biz bu değerlere tam olarak şu şekilde erişebiliriz; 

$json = '{"kadi" : "tayfun erbilen", "sifre" : "123456"}';
$data = json_decode($json)
echo $data->kadi; // tayfun erbilen
echo $data->sifre; // 123456
   

Fonksiyona 2. parametreyi true olarak atarsak nesne değil dizi olarak çözme işlemi yapacaktır.. O zamanda veriye erişimimiz yukarıdaki gibi değil aşağıdaki gibi olacaktır.

$json = '{"kadi" : "tayfun erbilen", "sifre" : "123456"}';
$data = json_decode($json, true)
echo $data['kadi']; // tayfun erbilen
echo $data['sifre']; // 123456
   

json_last_error()

JSON işleminde bir hata oluşup oluşmadığını bu fonksiyon ile kontrol edebiliriz. Bir hata olduğunda sayısal değer döndürecektir.. Bu sayısal değerler sırasıyla aşağıdaki sabitleri temsil etmektedir.

JSON_ERROR_NONE – Hata bulunamadı
JSON_ERROR_DEPTH – Azami yığın derinliği aşıldı (?)
JSON_ERROR_CTRL_CHAR – Denetim karakteri hatası, muhtemelen yanlış kodlanmış
JSON_ERROR_SYNTAX – Sözdizimi hatası
JSON_ERROR_UTF8 – UTF-8 karakter kodlama hatası, muhtemelen yanlış kodlanmış (Geçerlilik : PHP 5.3.1)

Kaynak

Yorumunuzu Ekleyin
PHP Dizilerini, JSON ile JavaScripte json_encode ile Göndermek Yorumları +1 Yorum
  • zaid
    1
    zaid
    I like the helpful information you provide in your articles.

    I will bookmark your blog and check again here regularly.

    I?m quite sure I?ll learn many new stuff right here! Good luck for the next!

    I have check this articls but its change How to Insert JSON data into MySQL using PHP
    06 Temmuz 2020 20:05:49, Pazartesi

PHP Data Objects (PDO) Nedir?
Yükleniyor...