初歩的な質問ですみません。

PHPプログラミングでの質問です。
仮に、配列Aに以下のように値が入っている場合、

Array
(
[いぬ] => 12
[ねこ] => 12
[ぶた] => 11
[ごりら] => 7
[たこ] => 7
[へび] => 6
[うし] => 5
[うま] => 4
[いか] => 2
)

要素の値から上位5件を配列Bに代入する処理のスマートな書き方を教えて下さい。
要素の値が重複している場合は同位とみなし、上の例だと、配列Bは、

Array
(
[0] => [いぬ]
[1] => [ねこ]
[2] => [ぶた]
[3] => [ごりら]
[4] => [たこ]
[5] => [へび]
[6] => [うし]
)

となるようにしたいです。

よろしくお願いします。

回答の条件
  • 1人1回まで
  • 登録:2008/10/10 11:28:46
  • 終了:2008/10/10 20:34:43

ベストアンサー

id:GoldenDawn No.1

GoldenDawn回答回数426ベストアンサー獲得回数812008/10/10 11:54:47

ポイント60pt

こんな感じでどうでしょうか。

<?php
$a = array('いぬ' => 12,'ねこ' => 12,'ぶた' => 11,'ごりら' => 7,'たこ' => 7,'へび' => 6,'うし' => 5,'うま' => 4,'いか' => 2) ;

$tmp = array_unique($a) ;
rsort($tmp) ;
$b = array() ;
for ($i = 0; $i < 5; ++$i) {
  $p = array_keys($a, $tmp[$i]) ;
  foreach ($p as $k) array_push($b, $k) ;
}

print_r($b) ;
?>

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません