【发布时间】:2012-12-22 10:36:14
【问题描述】:
我相信我想要实现的目标是直截了当的。
在某些情况下,如果给定距离小于给定邻近距离($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 或类似方法从您的解决方案中获取值。
希望你能得到我,
提前致谢!
【问题讨论】:
-
你能告诉我们你最终得到的最终数组吗,可能是时候快速
usort -
还是使用城市名称作为键,距离作为值?
-
@PruthviNag 这是个好建议
标签: php arrays multidimensional-array key multiple-value