我有一个多维数组,如下所示:
[0] => Array
(
[dist] => 5.421905274077098
[name] => venue1
)
[1] => Array
(
[dist] => 1.6506176672720143
[name] => venue2
)
[2] => Array
(
[dist] => 0.9541989204006235
[name] => venue1
)
我试图删除任何具有相同名称的,但具有优先级的距离,所以在上面的例子中,第三项将保留,而第一个项将被删除。到目前为止,我已经尝试遍历数组两次,并取消设置具有相同名称和较小距离的数组,但这似乎并没有删除它们
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]);
}
}
}
}
}
你可以像这样使用一个临时数组:
$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
数组将有效地包含移除后的项。