7 методов получения значений JSON по ключу в PHP

JSON (нотация объектов JavaScript) — это популярный формат данных, используемый для хранения и передачи структурированных данных. В PHP существует несколько способов извлечения значений из объекта JSON на основе их ключей. В этой статье мы рассмотрим семь различных методов с примерами кода для получения значений JSON с помощью ключей. Давайте погрузимся!

Метод 1: использование функции json_decode()

$jsonString = '{"name":"John", "age":30, "city":"New York"}';
$jsonData = json_decode($jsonString, true);
$value = $jsonData['name'];
echo $value; // Output: John

Метод 2: использование объекта stdClass

$jsonString = '{"name":"John", "age":30, "city":"New York"}';
$jsonData = json_decode($jsonString);
$value = $jsonData->name;
echo $value; // Output: John

Метод 3: использование функции array_column()

$jsonArray = '[{"name":"John", "age":30, "city":"New York"}]';
$data = json_decode($jsonArray, true);
$value = array_column($data, 'name');
echo $value[0]; // Output: John

Метод 4: использование функции array_search()

$jsonArray = '["John", "Jane", "Bob"]';
$data = json_decode($jsonArray, true);
$key = array_search("Bob", $data);
$value = $data[$key];
echo $value; // Output: Bob

Метод 5: использование RecursiveIteratorIterator

$jsonString = '{"name":"John", "age":30, "city":"New York"}';
$jsonData = json_decode($jsonString);
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($jsonData), RecursiveIteratorIterator::SELF_FIRST);
foreach ($iterator as $key => $value) {
    if ($key === 'name') {
        echo $value; // Output: John
        break;
    }
}

Метод 6. Использование библиотеки jsonpath-ng

require 'vendor/autoload.php';
use Laminas\Json\Json;
use Laminas\Json\JsonPath;
$jsonString = '{"name":"John", "age":30, "city":"New York"}';
$jsonData = Json::decode($jsonString);
$jsonPath = new JsonPath($jsonData);
$value = $jsonPath->query('$.name')->getData();
echo $value[0]; // Output: John

Метод 7. Использование пользовательской функции

function getJsonValueByKey($json, $key) {
    $data = json_decode($json, true);
    $iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($data));
    foreach ($iterator as $k => $v) {
        if ($k === $key) {
            return $v;
        }
    }
    return null;
}
$jsonString = '{"name":"John", "age":30, "city":"New York"}';
$value = getJsonValueByKey($jsonString, 'name');
echo $value; // Output: John

В этой статье мы рассмотрели семь различных методов получения значений JSON по ключу в PHP. Каждый метод имеет свои преимущества и может использоваться в зависимости от конкретных требований вашего приложения. Используя эти методы, вы можете эффективно извлекать нужные значения из объектов JSON. Поэкспериментируйте с этими методами и выберите тот, который лучше всего соответствует вашим потребностям.