Php 在foreach循环中创建数组
更新问题。如何在数组中添加其他列。我想添加一个列距离,它是我创建的公式的结果 这是我的密码Php 在foreach循环中创建数组,php,arrays,loops,foreach,Php,Arrays,Loops,Foreach,更新问题。如何在数组中添加其他列。我想添加一个列距离,它是我创建的公式的结果 这是我的密码 $db = $this->getDbo(); $query = $db->getQuery(true) ->select('*') ->from('#__listing'); $db->setQuery($query); $db->query();
$db = $this->getDbo();
$query = $db->getQuery(true)
->select('*')
->from('#__listing');
$db->setQuery($query);
$db->query();
$rows = $db->loadRowList();
$arr_data = array();
foreach ($rows as $row) {
$theta = $longitudeFrom - $row->longitude;
$dist = sin(deg2rad($latitudeFrom))
* sin(deg2rad($row>latitude))
+ cos(deg2rad($latitudeFrom))
* cos(deg2rad($row->latitude))
* cos(deg2rad($theta));
$dist = acos($dist);
$dist = rad2deg($dist);
$miles = $dist * 60 * 1.1515;
$distance = $miles * 1.609344;
$key = $row[0];
$arr_data[$key] = array('id' => $row[0], 'name' => $row[1]);
}
这就是我尝试过的
$arr_data = array();
foreach ($rows as $row) {
$theta = $longitudeFrom - $row->longitude;
$dist = sin(deg2rad($latitudeFrom))
* sin(deg2rad($row>latitude))
+ cos(deg2rad($latitudeFrom))
* cos(deg2rad($row->latitude))
* cos(deg2rad($theta));
$dist = acos($dist);
$dist = rad2deg($dist);
$miles = $dist * 60 * 1.1515;
$distance = $miles * 1.609344;
$key = $row[0];
$arr_data[$key] = array(
'id' => $row[0],
'name' => $row[1],
'distance' => $distance);
}
我是否正确地理解了您想要获取新数组,该数组包含$rows中每个记录的聚合记录?如果是,您可以执行以下操作:
$db = $this->getDbo();
$query = $db->getQuery(true)
->select('*')
->from('#__listing');
$db->setQuery($query);
$db->query();
$rows = $db->loadAssocList();
$arr_data = [];
foreach ($rows as $rowIndex=>$rowData) {
$theta = $longitudeFrom - $rowData['longitude'];
$dist = sin(deg2rad($latitudeFrom))
* sin(deg2rad($rowData['latitude']))
+ cos(deg2rad($latitudeFrom))
* cos(deg2rad($rowData['latitude']))
* cos(deg2rad($theta));
$dist = acos($dist);
$dist = rad2deg($dist);
$miles = $dist * 60 * 1.1515;
$distance = $miles * 1.609344;
$arr_data[$rowIndex] = [
'id' => $rowData['id'],
'name' => $rowData['name'],
'distance' => $distance
];
}
PS:我使用的是一个速记数组符号[],但它等于数组
PPS:原始代码中还有一个问题,将$row变量视为对象$row->经度,而不是数组$row[1]。哪一个是正确的取决于您如何获得$rows,但无论如何都不应该混合使用它
购买力平价:根据下面的评论,我已经使用loadAssocList更新了我的答案,以获得关联数组并进行了更改
'id' => $rowData[0],
'name' => $rowData[1],
到
假设您的“id”和“name”字段分别在DB中命名。并且如果我将$miles更改为$rowData->id。。这可能吗?例如,如何获取行ID?像这样$距离=$rowData->id*1.609344@这取决于$rows中的内容。如果是对象数组,则than$rowData->id;或者,如果$rows中的每个项目都是数组,则than$rowData['id']@JEROLDCOQUILLA请说明如何获取初始数据$RowI从数据库中全选,然后使用$arr_data=loadrowlist。。数据库中有id列,。这就是为什么我想知道我是否可以这样做$RowData->id。。
'id' => $rowData['id'],
'name' => $rowData['name'],