Php 在key=value处将带有key的值推入数组

Php 在key=value处将带有key的值推入数组,php,mysql,arrays,sorting,pdo,Php,Mysql,Arrays,Sorting,Pdo,我有一个数据库,有多个用户和位置数据。我把它们放在如下的数组中 id--username--lat-----lng 1 | user1 | 56.86 | 7.85 2 | user2 | 48.3 | 9.323 3 | user3 | 83.22 | 84.2 etc... 数组$users看起来像: $users = Array( [0] => ( [id] => 1[0] => 1[username] => user1[1] => user1

我有一个数据库,有多个用户和位置数据。我把它们放在如下的数组中

id--username--lat-----lng
1 | user1  |  56.86 | 7.85
2 | user2  |  48.3  | 9.323
3 | user3  |  83.22 | 84.2
etc...
数组$users看起来像:

$users = Array( [0] => ( [id] => 1[0] => 1[username] => user1[1] => user1[lat] => 56.86[2] => 56.86[lng] => 7.85[3] => 7.85)
[1] => ( [id] => 2[0] => 2[username] => user2[1] => user2[lat] => 48.3[2] => 48.3[lng] => 9.323[3] => 9.323)
[2] => ( [id] => 3[0] => 3[username] => user3[1] => user3[lat] => 83.22[2] => 83.22[lng] => 84.2[3] => 84.2))
我使用lat和lng计算每个用户使用mylat和mylng的距离。 然后我想将值$distn与用户id的值一起推送到位置/键id处的数组$users中,但我不知道如何:

    foreach ($users as $row) { //for each user in database calculate the distance and set it to the variable $distn

    $dist = 0.0;
        $x1 = $mylng;
        $x2 = $row['lng'];
        $y1 = $mylat;
        $y2 = $row['lat'];

        $dist = acos(sin($x1=deg2rad($x1))*sin($x2=deg2rad($x2))+cos($x1)*cos($x2)*cos(deg2rad($y2) - deg2rad($y1)))*(6378.137);
        $distn = FLOOR ( ROUND($dist,1) * 2 ) / 2 ;

      push $distn into $users where id=row['id'] // this is just a sample not real code

    }
因此,阵列现在应该如下所示:

$users = Array( [0] => ( [id] => 1[0] => 1[dist] => 3.0[1] => 3.0[username] => user1[2] => user1[lat] => 56.86[3] => 56.86[lng] => 7.85[4] => 7.85)
[1] => ( [id] => 2[0] => 2[dist] => 1.5[1] => 1.5[username] => user2[2] => user2[lat] => 48.3[3] => 48.3[lng] => 9.323[4] => 9.323)
[2] => ( [id] => 3[0] => => 3[dist] => 1.0[1] 1.0[username] => user3[2] => user3[lat] => 83.22[3] => 83.22[lng] => 84.2[4] => 84.2))
值$distn与键“dist”一起添加到每个用户值的键“id”之后。 如果可行,我希望对数组进行排序,以便首先显示“dist”最低的用户:

user3 1km distance
user2 1.5km distance
user1 3km distance

我怎么能做到这些?感谢您的帮助:)

对于第一部分,请使用
foreach()的
$key=>$value
语法:

对于排序,我将提取列并按以下方式对原始列进行排序:

array_multisort(array_column($users, 'dist'), SORT_ASC, $users);
此外,由于使用的是关联数组,请考虑:

$users = $statement->fetchAll(PDO::FETCH_ASSOC);

你有3个完全相同的问题。停止AbraCadaver我有两个问题有点相同,但这是另一个问题!我想知道如何将值按特定键推入数组。这与我的老问题无关!好了,现在你知道怎么做了,见下文。谢谢,我明天试试,终于成功了!谢谢
$users = $statement->fetchAll(PDO::FETCH_ASSOC);