#php #arrays
#php #массивы
Вопрос:
У меня есть двумерный массив объектов. Я хочу получить 5 лучших значений с наибольшим $prob[$i]->value
значением из массива.
$prob[$i] = new stdClass();
while ($row1 = @mysqli_fetch_array($selectTag))
{
$prob[$i]->value = ($pos_Count 1)/ ($totalPOS_count $distinct_pos_Count);
$prob[$i]->tag = $row1['tag'];
}
arsort($prob);
var_dump($prob);
Этот код выдает только 1 результат.
Как я могу получить 5 лучших значений в desc of из $prob[$i]->value
?
Комментарии:
1. сделайте это в цикле
$i
Ответ №1:
Попробуйте следующее:
while ($row1 = @mysqli_fetch_array($selectTag)) {
$prob[] = (object) array(
"value" => ($pos_Count 1)/ ($totalPOS_count $distinct_pos_Count),
"tag" => $row1['tag'],
);
}
uasort($prob, function($a, $b) { return strcmp($a->value, $b->value) } );
var_dump(array_slice($prob, 0, 5));
Я добавил несколько вещей в ваш код:
- правильно нажмите на свой массив. Для этого вам вообще не нужно
$i
, если вам удастся добавить все элементы в одной команде. Я сделал это, используя простой трюк с созданием временного массива и преобразованием его в object на лету. - определите свою функцию сортировки с помощью
uasort
. - берите только первые 5 элементов из отсортированного массива с помощью
array_slice
.
Комментарии:
1. Добавить
return
вcompare
функцию