Intereting Posts
Как установить местозаполнитель в drupal 7 в форме входа в систему Как рекурсивно создать многомерный массив? Yii2: вызов функции-члена saveAs () в нуле при загрузке нескольких файлов Подключение к SSH с помощью функции exec () PHP. В чем разница между find () findOrFail () first () firstOrFail Почему DOM меняет кодировку? Массив дерева подкатегорий категории трассировки PHP в пользовательский 2D-массив Загрузка изображения в базу данных mysql не работает Можно ли установить пакет из репозитория Gitlab с помощью Composer? Строгие стандарты: только переменные должны назначаться по ссылке PHP 5.4 Лучший способ включить javascript в php? Как регистрировать ошибки и предупреждения в файле? Перерисовать диаграмму Google на основе ввода пользователем через запрос AJAX Итоги CSRF против путаницы Nonce – они одинаковы? Перестроить данные json удалить дублирующее значение в одном дочернем узле

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

У меня есть 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; } ?>