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'],