我有一个多维的场地阵列,如下:
[0] => Array
(
[dist] => 5.421905274077098
[name] => venue1
)
[1] => Array
(
[dist] => 1.6506176672720143
[name] => venue2
)
[2] => Array
(
[dist] => 0.9541989204006235
[name] => venue1
)
我试图删除任何具有相同名称的内容,但优先考虑距离,因此在上面的示例中,第3项将保留,并且第一项将被删除。到目前为止,我已尝试循环遍历数组两次,并取消设置任何具有相同名称和更少距离的数据,但这似乎不会删除它们
for($i=0 ; $i<count($returned) ; $i++) {
for($j=0 ; $j<count($returned) ; $j++) {
if(!$returned[$j] || !$returned[$i]) {
} else {
if($returned[$j]['name']==$returned[$i]['name']) {
if($returned[$j]['dist']<$returned[$i]['dist']) {
unset($returned[$i]);
}
}
}
}
}
答案 0 :(得分:2)
您可以使用这样的临时数组:
$result = array();
foreach ($returned as $item) {
$name = $item['name']; // convenience variable
if (!isset($result[$name]) ||
$result[$name]['dist'] > $item['dist']) {
// add or overwrite
$result[$name] = $item;
}
}
之后,$result
数组将在删除后有效地包含项目。