在PHP中使用相同的元素创建JSON

在PHP中使用相同的元素创建JSON,php,json,Php,Json,我可能遗漏了一些明显的东西,但是否可以使用JSON\u encode创建这样的JSON { 'foo': 'bar', 'foo': 'baz' } 更新 我必须从一开始就注意到,我知道我问的东西很难闻。然而,这正是SOLR所需要的。请参见否,不会给出具有重复键的结果,因为您正在编码的对象/数组不能具有一个属性/键的多个值,但您可以通过几种不同的方式存储相同的数据。最自然的可能是: { "foo": ["bar", "baz"] } 您还可以执行以下操作: [

我可能遗漏了一些明显的东西,但是否可以使用
JSON\u encode
创建这样的JSON

{
    'foo': 'bar',
    'foo': 'baz'
}
更新

我必须从一开始就注意到,我知道我问的东西很难闻。然而,这正是SOLR所需要的。请参见

否,不会给出具有重复键的结果,因为您正在编码的对象/数组不能具有一个属性/键的多个值,但您可以通过几种不同的方式存储相同的数据。最自然的可能是:

{
    "foo": ["bar", "baz"]
}
您还可以执行以下操作:

[
   { 
     "key": "foo",
     "value": "bar"
   }, 
   { 
     "key": "foo",
     "value": "baz"
   }
]
如果必须为SOLR获取该语法,可以通过组合对json_encode的多个调用来获取,尽管这并不完美:

$foo1 = [ 'foo' => 'bar' ];
$foo2 = [ 'foo' => 'baz' ];

echo rtrim( json_encode( $foo1 ), '}' ) . ',' . ltrim( json_encode( $foo2 ), '{' );
// {"foo":"bar","foo":"baz"}

我相信JSON标准要求双引号而不是单引号。不幸的是,这并不是真的。对于同一个变量两次,这也违反了JSON标准。我认为您必须实现自己版本的
json\u encode
。也就是说,你可能想重新考虑你正在做的任何事情,因为这样做的结果可能是最可怕的、未定义的行为。假设你能使你的json字符串有效,你可以做
var_导出(json_decode($your_json))在这种情况下,您总是可以得到最后一个的值。我必须注意,我知道我所要求的是不对的。然而,这正是SOLR所需要的。看见