我相信我想要完成的事情是直截了当的。
在某些上下文中,如果给定距离小于给定的接近距离($ prox),则下面的代码将城市名称($ cityProx)推送到单维数组($ validLocationCity)
if($actualDistance <= $prox)
{
array_push($validLocationCity,$cityProx);
}
所以这很好。 但现在我希望根据距离对这一系列城市进行排序。
我的理论是一种简单的方法来实现这一点,就是将距离存储为数组中的键,允许我使用ksort(),这将允许我循环遍历城市,最近的点是最近的。
if($actualDistance <= $prox)
{
$validLocationCitySortDistance[$actualDistance] = $cityProx;
}
以上是我第一次尝试完成此操作,但是,当然,任何距离相同的城市都会覆盖为该距离/密钥存储的先前值。
如何实现这一点,以便如果键是相同的,即相等的距离,则新值(城市名称)将简单地添加/附加到该键。 还假设距离大于1的情况。
//结束问题
// ---------------------------------&GT;&GT;
我尝试添加一个新数组作为值,如果已经获取给定键
if($validLocationCitySortDistance[$actualDistance] != null)
{
$validLocationCitySortDistance[$actualDistance] [] = $cityProx;
}
else
{
$validLocationCitySortDistance[$actualDistance] = $cityProx;
}
这似乎是一种不正确且过于复杂的方式来做我想做的事情。由于我不知道需要迭代多少次,所以这种方法很糟糕。 我承认,我想我可能只是误解了我在上面的例子中做了什么。
如果有人可以提供帮助,我真的很感激,我也会问你是否看到了一个快速的解决方案,也展示了如何使用foreach等来从你的解决方案中获取值。
希望你能得到我,
提前致谢!
答案 0 :(得分:1)
使用城市名称作为键并应用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} ";
});