JSON'dan PHP dizisine

Bir JSON belgesini yapıştırın ve .php kaynak dosyası için biçimlendirilmiş bir PHP dizi literali elde edin: kısa dizi söz dizimi ([...]), doğru girinti, doğru şekilde tırnak içine alınmış dizeler, ilişkisel dizilere dönüşen iç içe nesneler ve dizinli kalan diziler. Testlere API fikstürleri gömmek veya yapılandırma dosyalarını doldurmak için kullanışlıdır.

JSON'ı PHP'ye nasıl dönüştürürsünüz

  1. 1

    JSON'ı yapıştırın

    Geçerli her türlü JSON: nesneler, diziler, derin iç içe yapılar.

  2. 2

    Söz dizimini seçin

    Kısa `[...]` (PHP 5.4+) veya uzun `array(...)` (artık nadiren gerekir).

  3. 3

    Dize tırnak türünü seçin

    Tek tırnak (değişken yerleştirme yok, apostroflar kaçışlanır) veya çift tırnak (`$` yerleştirmesine izin verir: veriler için genellikle istenmez).

  4. 4

    Diziyi kopyalayın

    Bunu `.php` dosyanıza yapıştırın, bir `return` ifadesine atayın veya `config([...])` içine sarın.

Örnek

Girdi:

{ "app": { "name": "Hyperion", "debug": true, "hosts": ["h1.example.com", "h2.example.com"] } }

Çıktı (kısa söz dizimi, tek tırnak):

[
    'app' => [
        'name' => 'Hyperion',
        'debug' => true,
        'hosts' => [
            'h1.example.com',
            'h2.example.com',
        ],
    ],
]

Tür eşlemesi

JSON PHP
dize dize (tek tırnak)
tam sayı int
sayı (ondalık) float
mantıksal değer true / false
null null
dizi (JSON) dizinli dizi
nesne (JSON) ilişkisel dizi

İlişkisel mi yoksa dizinli mi kullanmalı

PHP’de her iki davranışa da sahip tek bir dizi türü vardır. JSON ise nesne ile diziyi açıkça ayırır; dolayısıyla eşleme şöyledir:

  • {} → ilişkisel dizi (['key' => value]).
  • [] → dizinli dizi ([value, value]).

Üretici bu ayrımı her zaman korur; ikisini PHP’de karıştırmak geçerlidir ama kafa karıştırıcıdır.

PHP’ye özgü tuzaklar

  • Sayısal dize anahtarları. PHP, bir dizideki "42" değerini tam sayı anahtarı 42‘ye dönüştürür. JSON’unuz anahtar olarak sayısal dizeler kullanıyorsa ve bunları dize olarak korumanız gerekiyorsa, array_combine ile gidiş-dönüş bunları korumaz.
  • Büyük tam sayılar. JSON, 32 bitlik derlemelerde PHP_INT_MAX değerinden büyük tam sayılar tutabilir. Üretici, bu durum olası olduğunda uyarır.
  • UTF-8. PHP dizeleri bayt dizileridir; üretici UTF-8’i olduğu gibi verir. .php dosyanızın BOM içermeyen UTF-8 olarak kaydedildiğinden emin olun.

Kullanım alanları

  • Yapılandırma dosyaları. Hem Laravel hem de Symfony PHP dizisi yapılandırması kullanır. Sağlayıcı tarzı bir JSON yapılandırmasını taşımak iyi çalışır.
  • Test fikstürleri. PHPUnit fikstürleri, çalışma zamanında yüklenen JSON dosyalarına kıyasla dizi olarak daha düzenlidir.
  • Seeder’lar. Laravel’deki veritabanı seeder’ları genellikle bir JSON dökümü olarak başlar ve PHP dizilerine dönüşür.

Sık yapılan hatalar

  • PHP dizilerini tekrar JSON’a dönüştürmek. json_encode, ilişkisel bir diziyi nesne, dizinli bir diziyi ise dizi olarak ele alır. Bunları karıştırırsanız (['key' => 'val', 0 => 'x']), çıktıda bir nesne elde edersiniz. JSON biçimindeki dizileri JSON biçiminde tutun.
  • Apostrof içeren çift tırnak. Tek tırnaklı PHP dizeleri \' kaçışını gerektirir; çift tırnaklı dizeler \\" kaçışını gerektirir ve dikkatli olmazsanız değişkenler yanlışlıkla yerleştirilebilir. Veriler için tek tırnağa bağlı kalın.
  • Sondaki virgülleri unutmak. PHP, PHP 7.3’ten beri bunlara izin verir ve diff’leri daha temiz yapar. Üretici bunları varsayılan olarak ekler.

Sık Sorulan Sorular

Kısa söz dizimi ([...]) PHP 5.4’ten beri kullanılabilir ve tüm modern kod için deyimsel tercihtir. Uzun söz dizimi (array(...)) yalnızca PHP 5.3 veya daha eski sürümlerde çalışması gereken kod için gereklidir; yani eski sistemler için.

Evet. Laravel yapılandırma dosyaları, bir dosyadan döndürülen sıradan PHP dizileridir. Üreticinin çıktısını return ifadesinden sonra yapıştırın ve config/ dizinine kaydedin.

Tek tırnaklı PHP dizeleri değişkenleri veya kaçış dizilerini yerleştirmez (\' ve \\ hariç). Veri literalleri için bu daha hızlı ve güvenlidir. Çift tırnak yalnızca dizenin içinde \n, \t veya $variable istediğinizde önemlidir.

Hayır, bir dizi literali üretir. Gerektiğinde bunu kendiniz return, const veya bir sınıf özelliğiyle sarın. Çıktıyı küçük tutmak, onu birleştirilebilir kılar.

İlgili Araçlar

Araç diğer dillerde mevcuttur