В вашей функции сравнения $a
и $b
являются элементами вашего массива. Чтобы отсортировать элементы по num , используйте это:
function cmp($a, $b) {
if ($a['num'] == $b['num']) {
return 0;
}
return ($a['num'] < $b['num']) ? -1 : 1;
}
И для сортировки по число , а затем по dis используйте это:
function cmp($a, $b) {
if ($a['num'] == $b['num']) {
if ($a['dis'] == $b['dis']) {
return 0;
}
return ($a['dis'] < $b['dis']) ? -1 : 1;
}
return ($a['num'] < $b['num']) ? -1 : 1;
}
После сортировки массива вы можете отфильтровать элементы с дубликатом num с помощью этого:
for ($i=1, $j=0, $n=count($array); $i<$n; ++$i) {
if ($array[$i]['num'] == $array[$j]['num']) {
unset($array[$i]);
} else {
$j = $i;
}
}
И все вместе:
$array = array(
array('num' => '09989', 'dis' => '20'),
array('num' => '09989', 'dis' => '10'),
array('num' => '56676', 'dis' => '15'),
array('num' => '44533', 'dis' => '20'),
array('num' => '44533', 'dis' => '50')
);
function cmp($a, $b) {
if ($a['num'] == $b['num']) {
if ($a['dis'] == $b['dis']) {
return 0;
}
return ($a['dis'] < $b['dis']) ? -1 : 1;
}
return ($a['num'] < $b['num']) ? -1 : 1;
}
usort($array, 'cmp');
for ($i=1, $j=0, $n=count($array); $i<$n; ++$i) {
if ($array[$i]['num'] == $array[$j]['num']) {
unset($array[$i]);
} else {
$j = $i;
}
}
var_dump($array);