v2.5.2
Giriş yap

PHP - JSON Kullanımında Değişkenler

Anonim
399 defa görüntülendi

Merhaba,

Projemde bulunan bir sayfada JSON formatında apiye istek göndermekteyim. Bu işlemi yaptığım sayfada verileri veritabanından çekip bir değişkene alıyorum. Ancak örnek istek için kodlarım alt kısımdaki gibidir ve bu şekilde direkt değişkeni bildiğim kadarıyla json içerisine dahil edemiyorum. Bu tarz bir işte ilgili yerlere değişken içindeki değeri kaydetmemin en mantıklı yolu nedir ?


$json='{
  "items": [
    {
      "barcode": "57134497157135969",
      "quantity": 5,
      "salePrice": 97.5,
      "listPrice": 97.5
    }
  ]
munzevi
914 gün önce

php de json dönüştürmenin yöntemi json_decode adlı fonksiyondur. bu fonksiyonun ikinci parametresi varsayılan olarak "false" ayarlıdır ve json'u objeye dönüştürür.
örnek;

$json='{
  "items": [
    {
      "barcode": "57134497157135969",
      "quantity": 5,
      "salePrice": 97.5,
      "listPrice": 97.5
    }
  ]
 };
 $obje = json_decode($json);
 echo $obje->item[0]->barcode; // çıktısı: 57134497157135969;

şimdi gelelim ikincil parametreye, bu parametre true bildirildiğinde array olarak sonuç verir;

$array = json_decode($json, true);
echo $array["item"][0]["barcode"]; // çıktısı: 57134497157135969;

jsonu dönüştürmeyi anladıysak şimdi, nasıl ekleme yapacağımıza geri dönelim. php de array_push adında bir fonksiyon mevcut. bu fonksiyon 2 parametre alır, ilki kullanılacak ve değer eklenecek array'dır (dizi), ikincisi eklenecek olan değerlerdir.

array_push($array["item"][0], array("test" => "merhaba dünya") );
// array da yer alan item pozisyonunun 0 anahtarına, test anahtarlı bir veri ekledik

$json = json_encode($array);
//sonra tekrar json'a dönüştürdük

echo $json;
/*
{
  "items": [
    {
      "barcode": "57134497157135969",
      "quantity": 5,
      "salePrice": 97.5,
      "listPrice": 97.5,
      "test": "merhaba dünya"
    }
  ]
 }
*/

//alternatif olarak array_push kullanmadan da şunu yapabilirdik
$array["durum"] = ["status" => "false" ];
// bu kullanım array("status" => "false") ile aynıdır [] kısa array tanımlar;

$json = json_encode($array);
echo $json;

/*
{
  "items": [
    {
      "barcode": "57134497157135969",
      "quantity": 5,
      "salePrice": 97.5,
      "listPrice": 97.5,
      "test": "merhaba dünya"
    }
  ],
  "durum":[
      "status": "false",
  ]
 }
*/