phpの配列の取得について質問させていただきます。


array(35) { ["ああ"]=> int(5) ["あああ"]=> int(4) ["あたま"]=> int(4) ["スタバ"]=> int(3) ["test"]=> int(3) ["あ"]=> int(2) ["テスト"]=> int(2) ["えええ"]=> int(2) ["風景"]=> int(1)・・・・ }

このような配列にて
int()の降順で上位5位だけを抜き出したい場合はどのようにしたらよいでしょうか。
intの値は日々変化します。

array(35) { ["ああ"]=> int(5) ["あああ"]=> int(4) ["あたま"]=> int(4) ["スタバ"]=> int(3) ["test"]=> int(3) }

という形にしたいのですが調べても思い浮かばなく。


ご知見のあるかたいらっしゃいましたらご教授くださいませ。

どうぞよろしくお願いいたします。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/12/09 15:17:09
  • 終了:2011/12/09 15:33:34

ベストアンサー

id:y-kawaz No.1

y-kawaz回答回数1421ベストアンサー獲得回数2262011/12/09 15:31:41

ポイント100pt

↓こんな感じでソートしてやればすぐ出来ます。

<?php
$arr = array(
  "ああ" => 5,
  "あああ" => 4,
  "あたま" => 4,
  "スタバ" => 3,
  "test" => 3,
  "" => 2,
  "テスト" => 2,
  "えええ" => 2,
  "風景" => 1,
);

//キーを維持して値で逆順ソート
arsort($arr);

//配列の先頭から5個分を取り出す
$top5 = array_slice($arr, 0, 5);

print_r($top5);

↓出力結果

Array
(
    [ああ] => 5
    [あたま] => 4
    [あああ] => 4
    [test] => 3
    [スタバ] => 3
)


ソート関数は色々種類があるので以下を参考にしてください。
http://php.net/manual/ja/array.sorting.php

また、配列関連でやりたいことをどう実現すればよいか分からない場合は、
大抵マニュアルの配列のページを眺めてるとそれっぽい関数が見つかると思います。
http://www.php.net/manual/ja/book.array.php

id:kuso47

すみません!ありがとうございました。
array_sliceはみつけていたのですが、設定の仕方までは見ていませんでした。

大変助かりました!

2011/12/09 15:33:26

コメントはまだありません

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

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

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

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