0

我相信我想要完成的是直截了当的。

在某些情况下,如果给定距离小于给定接近距离($prox),则下面的代码将城市名称($cityProx)简单地推入一维数组($validLocationCity)

if($actualDistance <= $prox)
{   
    array_push($validLocationCity,$cityProx);
}

所以这很好。但现在我希望根据距离对这一系列城市进行排序。

我的理论实现这一点的一个简单方法是将距离作为键存储在数组中,允许我使用 ksort(),这将允许我循环遍历城市,稍后再靠近。

if($actualDistance <= $prox)
{   
    $validLocationCitySortDistance[$actualDistance] = $cityProx;
}

以上是我第一次尝试实现这一点,但是,当然,任何具有相同距离的城市都会覆盖为该距离/键存储的先前值。

我如何实现这一点,以便如果键相同,即距离相等,新值(城市名称)将简单地添加/附加到该键。还假设在超过 1 种情况下距离相等。

// 结束问题
//--------------------------------->>

如果使用给定的键,我尝试添加一个新数组作为值

if($validLocationCitySortDistance[$actualDistance] != null) 
{
    $validLocationCitySortDistance[$actualDistance] [] = $cityProx;
}
else
{
     $validLocationCitySortDistance[$actualDistance] = $cityProx;
}

这似乎是一种不正确且过于复杂的方式来做我想做的事情。由于我不知道我需要迭代多少次,所以这种方法很糟糕。我承认,我想我可能只是误解了我在上面的后一个示例中到底在做什么。

如果有人可以帮助它真的很感激,我还想问你是否看到一个快速的解决方案来展示我如何使用 foreach 或类似方法从你的解决方案中获取值。

希望你能得到我,
提前谢谢!

4

1 回答 1

2

使用城市名称作为键并应用 asort() 就可以了。

$myarr = ['delhi' => 12,
          'kolkata' => 30,
          'hyderabad' => 4,
          'adilabad' => 1,
          'vizag' => 10];
asort($myarr);

然后您可以使用访问密钥

foreach($myarr as $key => $value) {
    echo "{$key} : {$value}";
}

或者

array_walk($myarr, function($value, $key) {
   echo "{$key} : {$value} ";
});
于 2012-12-22T11:14:14.480 回答