1

最も人気のある(最も発生している)配列を並べて、それぞれのインスタンスを1つだけにしたい。

例えば、

Array ( [0] => cat [1] => dog [2] => bird [3] => dog [4] => dog [5] => cat [6] => turtle )

だろう:

Array ( [0] => dog [1] => cat [2] => bird [3] => turtle )

これを行うための最良の方法は何ですか?

4

3 に答える 3

1

array_count_valuesarsort関数を組み合わせます。このようなもの:

$a = array('cat', 'dog', 'bird', 'dog', 'dog', 'cat', 'turtle');
$a = array_count_values($a); // creating a 'name' => 'occurrence count' array
arsort($a); // sorting them reverse order and maintaining keys
$ordered_animals = array_keys($a); // getting the keys in a separate array
于 2013-02-16T22:33:48.550 に答える
0

私は次のようなものに行きます:

$reversed = array();
foreach($unsorted as $key => $val){
  if(!isset($reversed[$val])) $reversed[$val] = 0;
  $reversed[$val]++;
}

$sorted = array_keys(asort($reversed));
于 2013-02-16T22:34:48.347 に答える
0
$items = array( 'cat', 'dog', 'cat', 'hello', 'world', 'dog', 'hello', 'ok' ); // etc

$valueCount = array_count_values( $items );

arsort( $valueCount );

$keys = array_keys( $valueCount );
于 2013-02-16T22:35:07.177 に答える