Php 我怎么能得到这样的JSON?

Php 我怎么能得到这样的JSON?,php,arrays,json,Php,Arrays,Json,我需要一个带有数组的JSON,我怎么做 //JSON I need to get {"keywords":[{"keyword":"kw1", "tags":["sample"]},{"keyword":"kw2", "tags":["sample, sample2"]}]} //For now, I got this $keywords = array("kw1", "kw2"); $tags= array("sample", "sample2"); function Keyword

我需要一个带有数组的JSON,我怎么做

//JSON I need to get

{"keywords":[{"keyword":"kw1", "tags":["sample"]},{"keyword":"kw2", "tags":["sample, sample2"]}]}

//For now, I got this

$keywords = array("kw1", "kw2");

$tags= array("sample", "sample2");

function Keywords($keywords, $tags){

$fields= array("keywords" => $keywords);

$jsondata = json_encode($fields);

print_r($jsondata );

}

//output

{"keywords":["kw1","kw2"]}
我希望输出如下:

{"keywords":[{"keyword":"kw1", "tags":["sample"]},{"keyword":"kw2", "tags":["sample, sample2"]}]}

假设示例的第一个元素中的
标记
也应该是
[“sample,sample2”]
(否则,您将不得不通过您希望在所示结果中实现的逻辑进行解释)


基本上,在关键字和标记上有两个嵌套循环,在一个新的临时对象中创建一个,然后附加到结果数组。

为什么
kw1
只有一个标记?因为每个kw可以有一个或多个标记,但是,我不知道如何为不同的kw分配标记(如果使用不同的标记数组或使用索引)。我想我会为每个kw分配相同的标记。“因为每个kw可以有一个或多个标记”-然后你需要从一个反映这一点的数据结构开始。现在,特定关键字和任何特定标记之间没有任何关联,你只有两个“独立的”数组。此时您的输入数据不适合获得所需的结果。这将创建
“标记”:[“sample”,“sample2”]
,但如果您确实希望将标记作为一个逗号分隔的字符串而不是数组,则需要删除内部foreach循环,并且在这之前的行变为
$temp->tags=内爆(',$tags);
取而代之。谢谢你的帮助!最后,我用一个唯一的循环修复了它:foreach($keywords as$kw){$kw[“keywords”][]=array(“keyword”=>$kw,“tags”=>$tags);}
$keywords = array("kw1", "kw2");
$tags= array("sample", "sample2");

$result = new StdClass;
$result->keywords = [];

foreach($keywords as $keyword) {
  $temp = new StdClass;
  $temp->keyword = $keyword;
  $temp->tags = [];
  foreach($tags as $tag) {
    $temp->tags[] = $tag;
  }
  $result->keywords[] = $temp;
}

echo json_encode($result);