Сортировка массива PHP

D
На сайте с 28.06.2008
Offline
1104
247

Есть массив вида

[0]=>
object(stdClass)#1344 (3) {
["vsego"]=>
string(3) "103"
["srednee"]=>
string(17) "68.08533996285745"
["rayon"]=>
string(18) "название"
}
[1]=>
object(stdClass)#1883 (3) {
["vsego"]=>
string(3) "266"
["srednee"]=>
string(17) "63.55109034086529"
["rayon"]=>
string(29) "название"
}
[2]=>
object(stdClass)#1884 (5) {
["vsego"]=>
string(3) "156"
["srednee"]=>
string(18) "60.249999975546814"
["alias"]=>
string(11) "novosibirsk"
["rayon"]=>
string(22) "название"
["id"]=>
string(4) "2299"
}

Нужно сделать сортировку по значению ["srednee"]

Я сделал так

usort($itog, function($a, $b){
return ($b->srednee - $a->srednee);
});

Вроде получил что хотел но не сразу заметил что алгоритм не анализирует цифру после точки.

Т.е. значение 65.85 может быть ниже значения 65.01

Как быть?

DV
На сайте с 01.05.2010
Offline
644
#1
VDS хостинг ( http://clck.ru/0u97l ) Нет нерешаемых задач ( https://searchengines.guru/ru/forum/806725 ) | Перенос сайтов на Drupal 7 с любых CMS. ( https://searchengines.guru/ru/forum/531842/page6#comment_10504844 )
L
На сайте с 10.02.2015
Offline
233
#2

Вы пишете код в блокноте?

SocFishing
На сайте с 26.09.2013
Offline
118
#3

А что у вас srednee тип string. Вы строки сравниваете? О_о

Вроде все путём, на объекты переделать.

<?php

$data = [ [ 'vsego' => 88,
'srednee' => '68.08533996285745',
'rayon' => '11111'
],
[ 'vsego' => 77,
'srednee' => 68.185335745,
'rayon' => '222222'
],
[ 'vsego' => 66,
'srednee' => '60.9993996285745',
'rayon' => '333333'
]
];

function sortcall($a, $b) {
return ((float)$a['srednee'] < (float)$b['srednee']) ? -1 : 1;
}

usort($data, 'sortcall');

var_dump($data);
★Сервис идентифицирует (https://socfishing.com/?utm_source=searchengines) посетителей вашего сайта и предоставляет их профили ВКонтакте, Телефон, Почта! Цены копеечные, работаем 8 лет.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий