我有幾天無法解決的問題。我需要創建數組編碼成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