У меня есть php-скрипт, он обращается к 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-файла. Любая помощь оценена. Спасибо.
Я мог бы занять это место, но можно ли использовать эту ситуацию в этой ситуации?
<?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 }
Это не сложно интерполировать, когда вы сначала разбираете структуру; вы можете использовать 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()
.
Вместо того, чтобы делать это так, как { "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 );
<?php $json = file_get_contents("test.json"); $json_a=json_decode($json,true); foreach ($json_a as $key => $value){ echo $key . ':' . $value; } ?>