我有几天无法解决的问题。我需要创建数组编码成JSON格式如下:[PHP] [JSON]错误生成数组
[
{
"city": "Wroclaw",
"data": [
{
"id": "#",
"name": "Zlote tarasy",
"city": "Wroclaw",
"post_code": "50-545",
"street": "Ko\u015bciuszki",
"house_no": "2",
"flat_no": "4",
"opening_hours": "8:00 - 16:00",
"latitude": 52.2330649,
"longitude": 20.9207689,
"description": "Opis sklepu"
},
{
"id": "#",
"name": "Arkadia",
"city": "Wroclaw",
"post_code": "50-545",
"street": "Ko\u015bciuszki",
"house_no": "2",
"flat_no": "4",
"opening_hours": "8:00 - 16:00",
"latitude": 52.2571437,
"longitude": 20.9822873,
"description": "Opis sklepu"
}
]
}]
这里是我的产生阵列的方法:
public function getCollectionAsArray()
{
$stores = $this->getStoreCollection();
$jsonArray = array();
foreach ($stores as $store) {
$jsonArray[] = array(
'city' => $store->getCity(),
'data' => array(
[
'id' => $store->getIdentifier(),
'name' => $store->getName(),
'post_code' => $store->getPostCode(),
'street' => $store->getStreet(),
'house_no' => $store->getHouseNo(),
'flat_no' => $store->getFlatNo(),
'latitude' => $store->getLatitude(),
'longitude' => $store->getLongitude(),
'description' => $store->getDescription()
],
),
);
}
return $jsonArray;
}
它的工作,但是当我有2个相同城市的,它是创造新的城市,而不是加数据到'数据'数组:
array (size=4)
0 =>
array (size=2)
'city' => string 'Wrocław' (length=8)
'data' =>
array (size=1)
0 =>
array (size=9)
...
1 =>
array (size=2)
'city' => string 'Wrocław' (length=8)
'data' =>
array (size=1)
0 =>
array (size=9)
我想用array_merge和array_push但不成功。非常感谢您的帮助:)
我想在你的foreach循环,如果你使用if语句来测试,如果“城市”值是在阵列'in_array()',如果是则指示代码附加数据,如果不指示代码添加新的城市。 –
所以我想你只是在等人来为你做,对吧? – RiggsFolly
不,我不回答。我正在努力自己做。我花了很多时间来处理这个问题,但仍然没有解决它,所以我决定向人们寻求帮助(不是现成的解决方案) – Gatzu