0

$allrecords変数に mysql レコードの配列があります。

各レコードには複数のキーがあり、キーの 1 つは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 に答える