Я пытаюсь отсортировать многомерный объект, и, посмотрев на php.net и здесь, я понял, что мне нужно написать функцию, которую я мог бы затем вызвать через usort. У меня проблемы с синтаксисом. Я никогда раньше не писал что-то такое сложное, и пытаясь понять это, я чувствую себя как обманщик ...
Я работаю с массивом, размещенным в конце этого поста. Я хочу отфильтровать повторяющиеся значения [n]. Но, и это сложная часть для меня, я хочу сохранить значение [n], которое имеет наименьшее значение [d].
Итак, если у меня есть (и этот пример упрощен, реальный массив находится в конце этого поста):
Array (
[7777] => Array
( [0] => Array
( [n] => '12345' [d] => 1 )
[1] => Array
( [n] => '67890' [d] => 4 )
)
[8888] => Array
( [2] => Array
( [n] => '12345' [d] => 10 )
[3] => Array
( [n] => '67890' [d] => 2 )
)
)
Я хочу отфильтровать повторяющиеся значения [n] на основе значения [d], чтобы получить следующее:
Array (
[7777] => Array
( [0] => Array
( [n] => '12345' [d] => 1 )
)
[8888] => Array
[3] => Array
( [n] => '67890' [d] => 2 )
)
)
Я пытался написать различные варианты примера функции cmp, размещенного на php.net, но я не смог заставить его работать, и я думаю, что это потому, что я не совсем ясно, как его пройти используя их пример ...
Я пытался:
function cmp($a, $b)
{
if($a['n'] == $b['n'])
{
if($a['d'] == $b['d'])
{
return 0;
}
}
return ($a['n'] < $b['n']) ? -1 : 1;
}
Но это действительно не сработало ... Во всяком случае, вот реальный массив, с которым я пытаюсь работать ... Помощь очень ценится!
Array
(
[32112] => Array
(
[0] => Array
(
[n] => '02124'
[d] => '0'
)
[1] => Array
(
[n] => '02124'
[d] => '0.240101905123744'
)
[2] => Array
(
[n] => '11050'
[d] => '0.441758632682761'
)
[3] => Array
(
[n] => '02186'
[d] => '0.317514080260304'
)
)
[43434] => Array
(
[4] => Array
(
[n] => '02124'
[d] => '5.89936971664429e-05'
)
[5] => Array
(
[n] => '02124'
[d] => '0.145859264792549'
)
[6] => Array
(
[n] => '11050'
[d] => '0.327864593457739'
)
[7] => Array
(
[n] => '11050'
[d] => '0.312135345168295'
)
)
)