[英]PHP foreach overwriting results Joomla 2.5
我每個人目前正在為使用jvectormap的Joomla 2.5創建一個組件,由於某種原因,我將所有大洲和國家/地區都放在json中,但僅添加了最新添加的公司,而不是較舊的公司...我認為可能是與我的foreach語句有關...但實際上並不能完全確定:
我的模型文件:
public function getLand()
{
$land_id = JRequest::getInt('id');
$db = $this->getDbo();
$query = $db->getQuery(true);
$query->select('*, a.continent_name,continent_facts');
$query->from('#__vectormap_countries AS t')
->join('LEFT', '#__vectormap_continents AS a USING(continent_id)')
->where('t.published = 1');
$db->setQuery($query);
$rows = $db->loadObjectList();
return $rows;
}
public function getFirm(){
$firm_id = JRequest::getInt('id');
$db = $this->getDbo();
$query = $db->getQuery(true);
$query->select('*');
$query->from('#__vectormap_firms AS t')
->where('t.published = 1');
$db->setQuery($query);
$firms = $db->loadObjectList();
return $firms;
}
然后回顯數組的部分是我的view.json.php:
public function display($tpl = null)
{
$land = $this->get('Land');
$firm = $this->get('Firm');
$response = array();
foreach ($land as $row) {
$response[$row->country_code] = array(
'path' => $row->country_svgpath,
'name' => $row->country_name,
'continent' => $row->continent_name,
'fact' => $row->continent_facts
);
};
foreach ($firm as $firms) {
$response['firms'] = array (
'firm_name' => $firms->firm_companyname,
'firm_latitude' => $firms->firm_latitude,
'firm_longitude' => $firms->firm_longitude
);
};
echo json_encode($response);
}
並且在第一個foreach中返回所有內容,但是在第二個foreach中,它僅返回最新的公司,而不是全部。
請毫不猶豫地詢問是否需要更多詳細信息。.非常感謝。 謝謝 :)
將第二個循環更改為:
$response['firms'] = array();
foreach ($firm as $firms) {
$response['firms'][] = array (
'firm_name' => $firms->firm_companyname,
'firm_latitude' => $firms->firm_latitude,
'firm_longitude' => $firms->firm_longitude
);
};
這樣, $response['firms']
將成為列出所有公司的索引數組。
第二個foreach中的鍵是固定的,如$response['firms']
,因此以后的運行將覆蓋以前的運行。 您可以嘗試如下操作:
foreach ($firm as $firms) {
$response[$firms->firm_companyname] = array (
'firm_latitude' => $firms->firm_latitude,
'firm_longitude' => $firms->firm_longitude
);
};
這將為您提供公司名稱作為關鍵字-您需要在每次循環運行中進行更改。 您還可以有一個遞增的整數:
$firmcount = 0;
foreach ($firm as $firms) {
$response['firms' . $firmcount++] = array (
'firm_name' => $firms->firm_companyname,
'firm_latitude' => $firms->firm_latitude,
'firm_longitude' => $firms->firm_longitude
);
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.