将一系列PHP变量转换为JSON对象

时间:2014-03-04 15:11:00

标签: php json variables object

我有一系列PHP变量:

$a = "a";
$b = "b";
$c = "c";

and so on...

如何将所有这些变量转换为单个JSON对象?这可能吗?

3 个答案:

答案 0 :(得分:4)

你可能不应该有这样的结构。这就是数组的用途。

您当前正在将数据存储为顺序字符串。这是一个糟糕的主意。如果您有可以组合在一起的数据,那么使用数组几乎总是更好。这使得事情变得更加容易。

现在回答你原来的问题:


如果已知变量数,则可以先创建一个数组,然后使用json_encode()创建JSON字符串:

$arr = array($a, $b, $c);
$json = json_encode($arr);

如果事先不知道变量名,可以使用get_defined_vars()获取已定义变量的列表。

$arr = array_filter(get_defined_vars(), 'is_string');
echo json_encode($arr);

但这是一个坏主意。这仅在所有变量都包含在JSON表示中时才有效。例如,如果您的代码中定义了私有变量$somePrivateData,则JSON字符串也将包含该变量的值。

答案 1 :(得分:1)

您可以将变量转换为使用json_encode()docs)。通常,通过传递数组来使用它:

$array = array($a, $b, $c);

$result = json_encode($array);

编辑(来自评论):

如果要分隔每个值,您可以(正如您在评论中提到的那样)分别调用每个字符串上的编码函数。例如,您仍然可以将它们放入数组并使用

$result = array_map('json_encode', $array);

$result将包含3个json编码的字符串,但变量本身仍然是一个数组。

当然,你仍然可以使用:

$a = json_encode($a);
$b = json_encode($b);
$c = json_encode($c);

答案 2 :(得分:0)

也许这可以帮到你: json_encode function