JSON_ENCODE eines mehrdimensionalen Arrays mit unterschiedlichen Ergebnissen

JSON_ENCODE ist eine Funktion, die eine PHP-Datenstruktur, wie z.B. ein Array, in einen JSON (JavaScript Object Notation)-String umwandelt. Beim Enkodieren eines mehrdimensionalen Arrays wandelt die Funktion jin Unter-Array in ein JSON-Objekt um.

Zum Beispiel betrachten Sie das folgende PHP-Array:

<?php

$data = [
  "name" => "John Doe",
  "address" => [
    "street" => "123 Main St",
    "city" => "Anytown",
    "state" => "CA",
    "zip" => "12345",
  ],
  "phone numbers" => [
    "home" => "555-555-5555",
    "work" => "555-555-5556",
  ],
];

Wenn Sie json_encode für dieses Array verwenden, wird eine JSON-Zeichenfolge zurückgegeben:

<?php

$data = array(
    "name" => "John Doe",
    "address" => array(
        "street" => "123 Main St",
        "city" => "Anytown",
        "state" => "CA",
        "zip" => "12345"
    ),
    "phone numbers" => array(
        "home" => "555-555-5555",
        "work" => "555-555-5556"
    )
);

$json = json_encode($data);

echo $json;

Nach dem Ausführen des Codes sehen Sie, dass die Subarrays „Adresse“ und „Telefonnummern“ in JSON-Objekte umgewandelt wurden.

Es ist wichtig zu beachten, dass json_encode nur Arrays konvertiert, die "indiziert" sind (d.h. numerische Schlüssel haben), in JSON-Arrays. Assoziative Arrays (d.h. Arrays mit String-Schlüsseln) werden als Objekte codiert.

Außerdem hat json_encode einige Optionen, die als zweiter Argument übergeben werden können, wie z.B. JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_NUMERIC_CHECK, JSON_FORCE_OBJECT, JSON_UNESCAPED_UNICODE und etc.

zum Beispiel, mit JSON_PRETTY_PRINT wird der codierte json-String lesbarer:

<?php

$data = [
  "name" => "John Doe",
  "address" => [
    "street" => "123 Main St",
    "city" => "Anytown",
    "state" => "CA",
    "zip" => "12345",
  ],
  "phone numbers" => [
    "home" => "555-555-5555",
    "work" => "555-555-5556",
  ],
];

$json = json_encode($data, JSON_PRETTY_PRINT);
echo $json;

wird ausgeben:

{
    "name": "John Doe",
    "address": {
        "street": "123 Main St",
        "city": "Anytown",
        "state": "CA",
        "zip": "12345"
    },
    "phone numbers": {
        "home": "555-555-5555",
        "work": "555-555-5556"
    }
}