Как я могу интерполировать существующий литерал строки php внутри json файла?

У меня есть php script, он обращается к json файлу с помощью file_get_contents(), внутри json файла, мы объявили переменную php. Пожалуйста, дайте мне знать, есть ли способ проанализировать переменную php внутри json файла.

Ниже приведен код: test.json

{
    "result":"$result",
    "count":3
}

PHP скрипт для доступа к json файлу

<?php
$result = 'Hello';
$event = file_get_contents('test.json');
echo $event;
?>

Теперь результат выглядит следующим образом:

{ "result":"$result", "count":3 } 

Но мне нужен вывод вроде этого

{ "result":"Hello", "count":3 } 

Я не могу получить доступ к переменной $result внутри json файла. Любая помощь Оценивается. Спасибо

Ответы

Ответ 1

Я мог бы занять это место, но можно ли использовать эту ситуацию в этой ситуации?

<?php

$json = '{
    "result":"$result",
    "count":3
}'; //replace with file_get_contents("test.json");

$result = 'Hello world';



$test = eval('return "' . addslashes($json) . '";');
echo $test;

Выход:

{
    "result":"Hello world",
    "count":3
}

Ответ 2

Не сложно интерполировать это при первом анализе структуры; вы можете использовать array_walk() для итерации по каждому элементу в массиве и изменения значения, если оно совпадает с чем-то, начинающимся с $:

$json=<<<'JSON'
{
    "result":"$result",
    "count":3
}
JSON;

// parse data structure (array)
$data = json_decode($json, true);

// define replacement context
$context = ['$result' => 'Hello'];
// iterate over each element
array_walk($data, function(&$value) use ($context) {
    // match value against context
    if (array_key_exists($value, $context)) {
        // replace value with context
        $value = $context[$value];
    }
});

echo json_encode($data); // {"result":"Hello","count":3}

Очевидным преимуществом является то, что вам не нужно беспокоиться об экранировании строк, чтобы формат JSON не был нарушен.

Если структура данных рекурсивна, вы можете вместо нее использовать array_walk_recursive().

Ответ 3

Вместо этого сделайте так, как { "result":"$result", "count":3 }

Я бы сделал так.

Я бы указал короткий код для переменной для этого

{ "result":"**result**", "count":3 }

и когда я получу этот JSON в PHP, просто замените его на нужную переменную PHP

$event = file_get_contents('test.json');

var $result = "hello";
$parsed_json = str_replace("**result**",  $result,$event  ); 

Ответ 4

<?php
$json = file_get_contents("test.json");
$json_a=json_decode($json,true);

foreach ($json_a as $key => $value){
  echo  $key . ':' . $value;
}
?>