[英]Add SQL PHP array to an already existing array
我有兩個數據庫表。 一個包含市場,另一個包含市場的位置。 市場可以具有多個位置,兩個表由MarketplaceID聯接。 我需要查詢市場,將其轉換為數組,並在foreach或同時,將位置作為數組添加到市場。 這是兩個json響應的全部。 但是,我的目標是將數據組合在一起,並得到一個json響應,其中位置位於市場json數據內,稱為“ Locations”。 最終是一個市場,其中“市場”是父級,“位置”是子級。
代碼1(表1查詢):
$sql = "SELECT * FROM Marketplaces WHERE Status = 1";
$result = mysql_query($sql);
while($row = mysql_fetch_assoc($result)){
foreach($row as $key => $value){
$arr[$key] = $value;
}
$main_arr[] = $arr;
}
return $main_arr;
結果:
[{"MarketplaceID":"1","AccountID":"0","BusinessName":"Mike's Pub","BusinessType":"1","Status":"1","CreationDate":"0000-00-00 00:00:00"}]
代碼2(表2查詢):
$sql = "SELECT * FROM Locations WHERE MarketplaceID = 1";
$results = mysql_query($sql);
while($row = mysql_fetch_assoc($results)){
foreach($row as $key => $value){
$arr[$key]=$value;
}
$main_arr[] = $arr;
}
結果:
[{"LocationID":"1","MarketplaceID":"1","Address1":"5055 Business Center Drive","Address2":"Suite 100","City":"San Francisco","CA":"1","Zip":"90210","Phone1":"(555) 555-555","Phone2":"(555) 555-5555","EmailAddress":"email@msn.com","StoreNumber":"200"},{"LocationID":"2","MarketplaceID":"1","Address1":"112 Street Court","Address2":"","City":"Los Angeles","StateID":"2","Zip":"90210","Phone1":"(555) 555-6666","Phone2":"","EmailAddress":"email@gmail.com","StoreNumber":"300"}]
首先,放下
foreach($row as $key => $value){
$arr[$key] = $value;
}
除了和$arr = $row
一樣,它什么也不做; 實際上,它還有其他功能-由於未定義$arr
因此會產生警告。
編輯現在的答案已更新,因為初始查詢已從WHERE MarketplaceID=1
更改為WHERE Status = 1"
$main_arr=array();
$sql = "SELECT * FROM Marketplaces WHERE Status = 1";
$result = mysql_query($sql);
while($row = mysql_fetch_assoc($result)){
$row['locations']=array();
$sql2 = "SELECT * FROM Locations WHERE MarketplaceID = ".$row['MarketplaceID'];
$results2 = mysql_query($sql2);
while($row2 = mysql_fetch_assoc($results2)){
$row['locations'][]=$row2;
}
$main_arr[] = $row;
}
// print_r($main_arr); and view page source to read, rather than a JSON string
實際上,我的做法會稍有不同,這樣我的陣列就不會弄亂Marketplace中的位置,但仍將它們保持在一起,如下所示
while($row = mysql_fetch_assoc($result)){
$thisrow=array('marketplace'=>$row, 'locations'=>array());
$sql2 = "SELECT * FROM Locations WHERE MarketplaceID = ".$row['MarketplaceID'];
$results2 = mysql_query($sql2);
while($row2 = mysql_fetch_assoc($results2)){
$thisrow['locations'][]=$row2;
}
$main_arr[] = $thisrow;
}
所以對象是
{
"marketplace": {"MarketplaceID": 1, "BusinessName": "Fred Bloggs", ... }
"locations": [
{"LocationId": 1, "Address1": "Some address"},
{"LocationId": 2, "Address1": "Some address"}
]
}
如果我正確閱讀,則您的第一個數組是容納Marketplace 1數據的一維數組,而第二個數組是多維數組,其中父數組中的每個元素都包含一個子數組,該子數組包含有關單個位置的信息。 如果要將第二個數組放在第一個數組中,請嘗試像這樣嵌套循環:
$sql = "SELECT * FROM Marketplaces WHERE MarketplaceID = 1";
$result = mysql_query($sql);
while($row = mysql_fetch_assoc($result)){
foreach($row as $key => $value){
$arr[$key] = $value;
}
$sql2 = "SELECT * FROM Locations WHERE MarketplaceID = 1";
$results2 = mysql_query($sql2);
while($row2 = mysql_fetch_assoc($results2)){
foreach($row2 as $key => $value){
$arr2[$key]=$value;
}
$arr['locations'] = $arr2;
$main_arr = $arr;
}
這將創建一個臨時數組$ arr2,該數組容納您的位置數據,然后將其存儲在$ arr ['locations']中。 在代碼末尾,您要添加到$ main_arr的$ arr應該包含以下元素:“ MarketplaceID”,“ AccountID”,“ BusinessName”,“ BusinessType”,“ Status”,“ CreationDate”和“ location” ”和“ location”應該是一個包含元素的數組,這些元素包含從數據庫中提取的位置信息。
希望這能回答您的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.