0

我在$allrecords变量中有一个 mysql 记录数组。

每条记录有多个键,其中一个键称为type

一些变量具有相同的类型。

例如,它看起来像这样:

Seat
Mercedes
BMW
BMW
Mercedes
Audi
Mercedes
Fiat
Mercedes
Audi
Fiat
Mercedes

该数组现在是无序的(只是从数据库中获取的),现在我需要从出现次数最多的一个到最少对数组项进行排序。

比如像这样

Mercedes (5)
Audi (3)
BMW (2)
Fiat (2)
Seat (1)

我不需要数字(我使用另一个 foreach 循环),所以我需要它,就像这样:

Mercedes
Audi
BMW
Fiat
Seat

如何在 PHP 中做到这一点?是否可以?我需要根据类型对项目进行分组,然后将它们从出现次数最多到最少排序。

提前致谢。

编辑:我的数组看起来像这样:

Array
(
    [0] => stdClass Object
        (
            [id] => 125
            [user_id] => 29
            [show] => 1
            [state] => 1
            [type] => 23
            [subcat_id] => 11
            [category_id] => 2
            [name] => SLK 350


        )


)
4

4 回答 4

1
<?php

$groups = array();
foreach($allrecords as $record){
    $type = $record->type;
    if(empty($groups[$type]))
        $groups[$type] = 1;
    else
        $groups[$type]++;
}

asort ($groups);
$cars = array_keys($groups);
print_r($cars);
于 2012-08-23T05:41:19.430 回答
0
usort($allrecords, function($a, $b){ return $a->count >= $b->count; });

其中“count”是属性的名称...

于 2012-08-23T05:25:29.517 回答
0
var_dump(str_word_count(implode(" ", $all_records))); // Returns array( "Mercedes" => 5 ... )
于 2012-08-23T05:29:47.067 回答
0

啊啊啊没看懂!!!

你应该使用 SQL 来实现这一点!!!

SELECT type, COUNT(1) FROM cars GROUP BY type;
于 2012-08-23T05:36:21.477 回答