Concat переменная php в строке json - PullRequest
1 голос
/ 25 августа 2011

У меня есть следующее в myfile.php

$json_data = '{"type":"email","msg":"some text"}';

Вместо того, чтобы набирать «email» или «некоторый текст», я хочу объединить переменные php $ thetype и $ themsg в строку ранее.

Как я могу это сделать?Независимо от того, что я делаю, я получаю синтаксическую ошибку.

Я пытаюсь:

$json_data = '{"type":"+$thetype+","msg":"+$themsg+"}';

Но, как я уже сказал, изобилие ошибок.

Большое спасибо

Ответы [ 2 ]

8 голосов
/ 25 августа 2011

Ваш вопрос немного расплывчатый ...

Вы ищете это?

$json = array('type' => $thetype, 'msg' => $themsg);
$json_data = json_encode($json);

Это установит $json_data в строку, аналогичную описанной вами:

<?php

$thetype = 'something';
$themsg = 'something else';
$json = array('type' => $thetype, 'msg' => $themsg);
$json_data = json_encode($json);
var_dump($json_data);

Выведет:

string(43) "{"type":"something","msg":"something else"}"

См. руководство по PHP для json_encode .

Вы можете попробовать создать строку вручную, например так:

$json_data = '{"type":"'. addcslashes($thetype,"\"'\n").'","msg":"'. addcslashes($themsg,"\"'\n").'"}';

Но вам, как правило, будет лучше использовать json_encode, так как он предназначен для этой цели и с гораздо меньшей вероятностью будет создавать недопустимый JSON.

0 голосов
/ 25 августа 2011

PHP имеет функцию для кодирования JSON.ОДНАКО вам нужно вывести его как объект для сохранения ключей.Кстати, это 3D-массив.

$data[]=array('type' => $thetype0, 'msg' => $themsg0);
$data[]=array('type' => $thetype1, 'msg' => $themsg1);
$json=json_encode((object)$data);

РЕДАКТИРОВАТЬ: Этот метод должен использоваться для более старых версий PHP.Он совместим с PHP 5.3.Функция json_encode () имеет несколько изменений, благодаря которым вывод объекта недоступен в PHP 5.2.

...