• ベストアンサー

phpで配列の重複する項目を多い順に並べたいです!

$a = array("hoge","piyo","hoge","banana","hoge","piyo"); ↓ $b = array("hoge","piyo","banana"); みたいな配列があったとき、上のように重複する項目をまとめて、 さらに多い順に並び替えるにはどのようなコードを書けば良いですか?

  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5078/13272)
回答No.1

$a = array("hoge","piyo","hoge","banana","hoge","piyo"); $c = array_count_values($a); arsort($c); $b = array_keys($c);

azu200
質問者

お礼

ありがとうございます!

関連するQ&A

  • 配列の重複を削除後、削除分の値を加算したいのですが

    具体的には、下記例で、 urlが同じだったら、重複部分を削除して、 削除した[count]を、重複整理して残ったトコに加算して、 [count]数の多い順に並べ替えたいのですが、 どうすればよいでしょうか? Array (   [0] => Array     (      [url] => /hoge/piyo.html      [date] => 20110105      [count] => 4     )        [1] => Array     (      [url] => /hoge/      [date] => 20110105      [count] => 1     )        [2] => Array     (      [url] => /kiyo.html?post_id=158      [date] => 20110105      [count] => 2     )        [3] => Array     (      [url] => /blog/      [date] => 20110105      [count] => 3     )   [4] => Array     (      [url] => /kiyo.html      [date] => 20110105      [count] => 1     )        [5] => Array     (      [url] => /kiyo.html      [date] => 20110105      [count] => 2     )      なときに、 Array (   [0] => Array     (      [url] => /kiyo.html      [date] => 20110105      [count] => 5     )        [1] => Array     (      [url] => /hoge/piyo.html      [date] => 20110105      [count] => 4     )        [2] => Array     (      [url] => /blog/      [date] => 20110105      [count] => 3     )   [3] => Array     (      [url] => /hoge/      [date] => 20110105      [count] => 1     )      としたいです

    • ベストアンサー
    • PHP
  • PHPの配列について

    PHPの配列についての質問です。 以下のソースを // == ソース == function hoge( $foo ) { $arrs['a'] = 'A'. $foo; $arrs['b'] = 'B'. $foo; $arrs['c'] = 'C'. $foo; $arrs['d'] = 'D'. $foo; } hoge( '3' ); hoge( '9' ); // == /ソース == 実行すると print_rは // == print_r == Array (   [a] => A3   [b] => B3   [c] => C3   [d] => D3 ) Array (   [a] => A9   [b] => B9   [c] => C9   [d] => D9 ) // == /print_r == のようになります。 これを 関数を実行するごとに (0から IDのような 配列を組むようにする) 以下のようにするには どのようにすればよいでしょうか? // == print_r == Array (   [0] => Array     (       [a] => A3       [b] => B3       [c] => C3       [d] => D3     )   [1] => Array     (       [a] => A9       [b] => B9       [c] => C9       [d] => D9     ) ) // == /print_r == 使用目的は get_contentsしたものを正規表現で取り出し 配列にする処理に使おうと思っています。

    • ベストアンサー
    • PHP
  • 文字列になっている配列を‥

    以下の値がDBに文字列の項目に登録されています。 DB から値を取得したのはいいのですが文字列なので foreach でグルグルしようとすると怒られてしまいます。 配列の型に変換できればいいのですが(array)だとうまく行かないしどうすればいいかどなたかご教授願えないでしょうか。 よろしくお願いします。 ■値(文字列でDBに格納されてます‥) array( 1=>'a', 2=>'b', 3=>'c', 10=>array( 'A'=>1, 'B'=>'hoge1', ), 11=>array( 'A'=>2, 'B'=>'hoge2', ), 12=>array( 'A'=>3, 'B'=>'hoge3', ), )

    • 締切済み
    • PHP
  • 配列の内容に重複をなくすには・・・

    いつもお世話になっています。 今回VB6でプログラムを作成していて壁にぶち当たってしまいました。 分かる方がいましたらご教授下さい。 タイトル通りなんですが配列の内容の重複をなくした新しい配列を作成したいと考えています。 例 配列A: 1, 1, 2, 6, 5, 2, 3, 3 を 配列B: 1, 2, 6, 5, 3 と配列Aの先頭から順に配列Bに入れていきたいのです。 また、配列を動的配列で宣言していますが、配列Bの終わりが不定なので、最後に終端コード?を入れる 必要があるのか??と思っているのですが”EOF”なのでしょうか? for i=0 to EOF 配列B[i] next i とすればすべて取り出せるのでしょうか? 補足が必要でしたら言ってください。 よろしくお願いいたします。

  • 【PHP】配列を連想配列に

    $m = array('a', 'b', 'c'); この配列 $m をもとに $n = array(  'a' => array(   'b' => array(    'c' => array()))); 上のような連想配列 $n をつくりたいのですが、 $n = array(  $m[0] => array(   $m[1] => array(    $m[2] => array()))); 要素の数が固定のときは、これでもいいのですが、数が変動する場合に対応できません。 何か方法があれば教えてください。

    • ベストアンサー
    • PHP
  • php 重複した配列の削除

    重複する配列を削除した結果を取得したいのですがうまくいきません。 値が必ずしも同様の位置にセットされていないため重複削除ができずに困っております。 Array ( [0] => tag1 [1] => tag4 [2] => tag2 [3] => tag3 ) Array ( [0] => tag4 [1] => tag3 [2] => tag2 [3] => tag1 ) Array ( [0] => tag5 [1] => tag6 ) 上記の重複した値を削除して、下記のように処理したいのですが、、、 Array ( [0] => tag1 [1] => tag4 [2] => tag2 [3] => tag3 ) Array ( [0] => tag5 [1] => tag6 ) 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • 配列を抜き出し新しい配列を作りたい

    いつも参考にさせて頂いています。 今あるボタンAに function sortFunc(a, b) { return a.ID-b.ID; } hoge = new Array(); hoge.push({ID:_root.g1, a:"○○", b:"mc_maru"}); hoge.push({ID:_root.g2, a:"△△", b:"mc_sankaku"}); hoge.push({ID:_root.g3, a:"□□", b:"mc_shikaku"}); hoge.sort(sortFunc); // 結果 { } for (var i = hoge.length; i>=0; i--) { trace(hoge[i].ID+hoge[i].a+hoge[i].b); this.key_text.text +=(("\r")+hoge[i].a); } } このような配列の並び替えをしています。 _root.g1、2、3の点数を受けて点数の高い順に並び替えしてる 物を_key.textと言うダイナミックテキストに渡して表示させています。 この並び替えを利用し点数の高いものを二つを抜きだしたいのですが、 Array.slice()をどうやって使えばいいのか分からず困っています。 わかる方いらしたら教えて頂けないでしょうか?

    • ベストアンサー
    • Flash
  • 配列の重複削除について

    配列の重複削除について教えて下さい。 普通の重複チェックとは違い、3つの配列 それぞれに値があり、添え字が0から同じ ように始まり、3つの配列が全て同じものは、 例えば、 配列A[2]='30' 配列B[2]='000' 配列C[2]='1' 配列A[4]='30' 配列B[4]='000' 配列C[4]='1' は、1つの添え字にまとめたい。 その3つが一致したもの重複をまとめたいのと、 新しく出た3つの値は残したいのです。 つまり、以下のように抽出したいのです。 何か良い方法があれば教えて下さい。 perlで作成しています。 注)配列Cは空白もあります。 配列A( 10, 20, 30, 10, 30, 20) 配列B(000,010,000,010,000,000) 配列C(  , 0, 1, 0, 1, 1) ↓ 配列D( 10, 20, 30, 10, 20) 配列E(000,010,000,010,000) 配列F(  , 0, 1, 0, 1)

    • ベストアンサー
    • Perl
  • setcookieで配列に格納される順番について

    setcookie('pi[0]', 'hoge'); setcookie('pi[1]', 'piyo'); setcookie('pi[2]', 'puyo'); print_r($_COOKIE['pi']); を試すと、 Array ( [1] => piyo [2] => puyo [0] => hoge ) になります。 なぜ、 Array ([0] => hoge [1] => piyo [2] => puyo ) にならないのでしょうか? どうして順番が入れ替わるか教えてください

    • ベストアンサー
    • PHP
  • PHPで重複をカウントし数ごとに配列を分けたいです

    PHPの配列で重複項目をカウントし、その重複数ごとに別々の配列に格納したいです。 $wordに "ねこ"というワードが12個 "いぬ"というワードが8個 "うさぎ"というワードが5個 "りす"というワードが2個 入ってて 10個以上なら$wd1にワードを 5個以上、10個未満なら$wd2にワードを 入れるというようにしたいです。 $wd1 = ("ねこ"); $wd2 = ("いぬ","うさぎ"); のような感じにしたいです。 $word = array_count_values($word); if(○○○ >= 10 ){ }else if(○○○ < 10 && ○○○ >= 5 ){ } というような感じで書きたいのですが、どうしたらいいですか?

    • ベストアンサー
    • PHP

専門家に質問してみよう