我在 $ allrecords 变量中有一系列mysql记录。
每条记录有多个键,其中一个键称为类型。
某些变量具有相同的类型。
E.g。它看起来像这样:
Seat
Mercedes
BMW
BMW
Mercedes
Audi
Mercedes
Fiat
Mercedes
Audi
Fiat
Mercedes
现在这个数组是无序的(只是从数据库中获取),现在我需要从最常出现的数组中排序数组项。
E.g。像这样
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
)
)
答案 0 :(得分: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);
答案 1 :(得分:0)
usort($allrecords, function($a, $b){ return $a->count >= $b->count; });
其中“count”是属性的名称......
答案 2 :(得分:0)
var_dump(str_word_count(implode(" ", $all_records))); // Returns array( "Mercedes" => 5 ... )
答案 3 :(得分:0)
aaaah我没有得到那个!!!
你应该用SQL来实现这个!!!
SELECT type, COUNT(1) FROM cars GROUP BY type;