【问题标题】:php arrays, storing multiple values with the same key within foreach loopphp数组,在foreach循环中使用相同的键存储多个值
【发布时间】: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


【解决方案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} ";
});

【讨论】:

  • 嘿,这很有帮助,我对使用字符串作为键感到困惑,因为当我早些时候尝试它时,我错误地打印了键并看到了数值。感谢您的帮助,不胜感激!
猜你喜欢
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-22
  • 2014-01-02
  • 1970-01-01
相关资源
最近更新 更多