从多维数组数据生成 json 字符串
2022-08-30 14:25:57
我正在使用一个插件,它需要一个关联行数组作为json格式的字符串 - 类似于:
[
{oV: 'myfirstvalue', oT: 'myfirsttext'},
{oV: 'mysecondvalue', oT: 'mysecondtext'}
]
如何使用 PHP 将多维数组转换为有效的 JSON 输出?
我正在使用一个插件,它需要一个关联行数组作为json格式的字符串 - 类似于:
[
{oV: 'myfirstvalue', oT: 'myfirsttext'},
{oV: 'mysecondvalue', oT: 'mysecondtext'}
]
如何使用 PHP 将多维数组转换为有效的 JSON 输出?
一旦你有了你的PHP数据,你可以使用json_encode
函数;从 PHP 5.2 开始,它与 PHP 捆绑在一起。
在您的例子中,您的 JSON 字符串表示:
在 PHP 中,这将创建你所表示的结构:
$data = array(
(object)array(
'oV' => 'myfirstvalue',
'oT' => 'myfirsttext',
),
(object)array(
'oV' => 'mysecondvalue',
'oT' => 'mysecondtext',
),
);
var_dump($data);
您将获得:var_dump
array
0 =>
object(stdClass)[1]
public 'oV' => string 'myfirstvalue' (length=12)
public 'oT' => string 'myfirsttext' (length=11)
1 =>
object(stdClass)[2]
public 'oV' => string 'mysecondvalue' (length=13)
public 'oT' => string 'mysecondtext' (length=12)
并且,将其编码为 JSON:
$json = json_encode($data);
echo $json;
您将获得:
[{"oV":"myfirstvalue","oT":"myfirsttext"},{"oV":"mysecondvalue","oT":"mysecondtext"}]
顺便说一句,根据我的记忆,我会说你的JSON字符串不是有效的JSON数据:字符串周围应该有双引号,包括对象属性的名称。
最简单的方法可能是从您想要的对的关联数组开始:
$data = array("myfirstvalue" => "myfirsttext", "mysecondvalue" => "mysecondtext");
然后使用 foreach 和一些字符串连接:
$jsontext = "[";
foreach($data as $key => $value) {
$jsontext .= "{oV: '".addslashes($key)."', oT: '".addslashes($value)."'},";
}
$jsontext = substr_replace($jsontext, '', -1); // to get rid of extra comma
$jsontext .= "]";
或者,如果您有最新版本的PHP,则可以使用内置的json编码函数 - 只需小心您传递它们的数据以使其与预期的格式相匹配即可。