我有一个数组`$ a',包含以下数据:
[0]=>'text',
[1]=>'text1, text2, text3'
我想从这些数据中生成一个JSON对象,如下所示:
'{"TestingApplications": [
{ "ApplicationName": "text" },
{ "ApplicationName": "text1" },
{ "ApplicationName": "text2" },
{ "ApplicationName": "text3" }
]
}'
我做了什么:
<?php
$a=array(0=>"text", 1=>"text1, text2, text3");
$r = array();
foreach($a as $key => $val){
if (strpos($val,',') !== false) {
$v = explode(',', $val);
foreach($v as $k => $l){
array_push($r, $l);
}
} else{
array_push($r, $val);
}
}
那么,我如何使用$r
中存储的数据生成所需的JSON?
答案 0 :(得分:1)
我首先创建json对象的基本结构:
$temp = [
'TestingApplications' => [],
];
接下来,迭代你拥有的数据,并explode
所有包含逗号的字符串,就像你现在正在做的那样:
foreach ($a as $value) {
$exploded = explode(',', $value);//no need to check for comma's
foreach ($exploded as $name) {
//perhaps consider calling trim on $name here
$temp['TestingApplications'][] = ['ApplicationName' => $name];
}
}
最后,json_encode
该地段:
return json_encode($temp);
虽然说实话:我真的试图改变数据提供方式的方式。如果所有字符串值都应该以相同的方式处理,那么有时它们被分配给一个不同的键(在$a
数组中)是完全不可接受的,但在其他情况下,它们是以逗号分隔的字符串。
至少对我而言,这看起来像是一个X-Y问题
答案 1 :(得分:1)
尝试如下:
<?php
$a=array(0=>"text", 1=>"text1, text2, text3");
$r = array();$final = array();
foreach($a as $key => $val){
if (strpos($val,',') >= 0) {
$v = explode(',', $val);
foreach($v as $k => $l){
$r[]['ApplicationName']= "$l";
}
}
}
$final['TestingApplications'] = $r;
echo json_encode($final);
?>
答案 2 :(得分:0)
您可以尝试json_encode。这将返回值
的 JSON 表示例如:
$arr = array(0=>"text", 1=>"text1, text2, text3");
echo json_encode($arr);
希望这对你有所帮助。
答案 3 :(得分:0)
json_encode();用于在php中从数组转换json中的数据。
$array = array('TestingApplications'=>array( "appname1"=>"text1","appname2"=>"text2", "appname3"=>"text3"));
echo json_encode($array);
答案 4 :(得分:0)
假设你有这个来源:
$sourceArray = array(
'text',
'text1, text2, text3',
);
在将其转换为JSON之前,需要构建正确的PHP数组。我建议以递归的方式这样做,同时修剪空格:
// get a flat array
$tmpArray = array_map(function($array) {
return explode(',', $array);
}, $sourceArray);
$flatArray = array();
array_walk_recursive($tmpArray, function($a) use (&$flatArray) {
$flatArray[] = trim($a);
});
$toJsonArray = array('TestingApplications' => array());
foreach ($flatArray as $val) {
$toJsonArray['TestingApplications'][] = array(
'ApplicationName' => $val,
);
}
然后你只需要将它编码为JSON:
echo json_encode($toJsonArray);
答案 5 :(得分:0)
要生成所需的JSON对象,数组应如下所示:
$arr = array(
'TestingApplications' => array(
array('ApplicationName' => 'text'),
array('ApplicationName' => 'text1'),
array('ApplicationName' => 'text2'),
array('ApplicationName' => 'text3'),
)
);
然后将此数组编码为json:echo json_encode($arr);
它将返回所需的JSON对象
答案 6 :(得分:0)
试试这个。
$a=array(0=>"text", 1=>"text1,text2,text3");
$r = array();
foreach($a as $key => $val){
if (strpos($val,',') !== false) {
$v = explode(',', $val);
foreach($v as $k => $l){
$final['ApplicationName']=$l;
$final_arr[]=$final;
}
} else{
$final['ApplicationName']=$val;
$final_arr[]=$final;
}
}
$result['TestingApplications']=$final_arr;
echo json_encode($result);