• ベストアンサー

array_uniqueしたあとインデックスを振りなおす

array_uniqueで重複したものを取り除いても、 インデックス情報は保持されますが、 これを 順番に1,2,3...と振りなおす方法があったら教えてください。 よろしくお願いします!

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

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

  • ベストアンサー
  • masa6272
  • ベストアンサー率66% (93/140)
回答No.4

実際の実行結果です。うまくいってますが・・ 問題点、勘違いしているかな? もし、疑問点が違うんでしたら、もう一度教えてください。 <?php $a = array(0=>'リンゴ',1=>'リンゴ',2=>'バナナ'); var_dump($a); $a = array_unique($a); var_dump($a); $a = array_merge($a); var_dump($a); ?> ^Z array(3) { [0]=> string(6) "リンゴ" [1]=> string(6) "リンゴ" [2]=> string(6) "バナナ" } array(2) { [0]=> string(6) "リンゴ" [2]=> string(6) "バナナ" } array(2) { [0]=> string(6) "リンゴ" [1]=> string(6) "バナナ" } こう書けば、1行です。 $a = array_merge(array_unique($a));

madman666
質問者

お礼

こちらの間違いだったようで $array = array_merge(array_unique($array)); のように書くことで 思っていたとおりの結果を実現できました!! なんども回答していただいて、ほんとうにありがとうございました!!

その他の回答 (3)

  • masa6272
  • ベストアンサー率66% (93/140)
回答No.3

この、array_merge関数では、ダメですか? スマートって・・・どんな方法をお望みですか?

madman666
質問者

お礼

すみません! こちらのやり方がいけないのかもしれませんが、 array_mergeではうまくいきませんでした; たとえば Array ( [0] => リンゴ [1] => リンゴ [2] => バナナ ) このような配列を array_uniqueすると Array ( [0] => リンゴ [2] => バナナ ) このようになりますが、 そうではなくて Array ( [0] => リンゴ [1] => バナナ ) のようにしたいのです。 no.1で回答いただいたように forで配列に入れなおせば実現できるのですが、 これを一発でできる関数などがないかな、という質問でした。 こちらの理解力不足で、すみません;;

  • masa6272
  • ベストアンサー率66% (93/140)
回答No.2

<?php $a = array(2 => 3, 4 => 5, 8 => 10); $a = array_merge($a); var_dump($a); ?> ^Z array(3) { [0]=> int(3) [1]=> int(5) [2]=> int(10) } こういうことをやりたいんでしょうか?

madman666
質問者

お礼

そのとおりです! なにかスマートな方法はありますでしょうか?

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

別の配列にforとかで回して詰め直す    じゃない?

madman666
質問者

お礼

やはりそれしか無いですか・・・ 何かそういう関数があるかな、と思ったのですが; 回答ありがとうございます!

関連するQ&A

  • array_uniqueについて

    こんにちは。質問させてください。 array_unique関数はPHP4.04以降は使用できないと マニュアルに記述されていました。 ですがどうしても配列内の重複した値を 削除したいのですが、ロジックがうまく 思いつけません・・・ どなたかわかる方はいらっしゃいますか? $test_array = array("america","japan","america","canada","japan"); ⇒ ("america","canada","japan") しかもソートしたいです!! 宜しくお願い致しますm(_ _)m

    • 締切済み
    • PHP
  • MySQLのUNIQUE INDEXとINDEX

    MySQLのUNIQUE INDEXとINDEXの使い分けで質問があります。 UNIQUE INDEXは、社員番号や学籍番号など重複がないものに対して使われ、 INDEXは名前のように重複が想定されるものに対して使われるのでしょうか? また、複数のカラムに同一のインデックスをつける場合、 CREATE INDEX idx_名前 ON 社員(氏,名) と言う感じになりますが 例えばこんなコード CREATE INDEX idx_名前 ON 社員(氏) and CREATE INDEX idx_名前 ON 社員(名) これはエラーになるんでしょうか?

    • ベストアンサー
    • MySQL
  • uniqueの使い方について

    現在C++でSTLを用いてプログラムを書いておりますが、uniqueの使い方で質問があります。 1, 1, 1,2 , 1 という配列が合った場合、uniqueで重複を消した場合、 1, 2, 1 となります。 sortをしてからuniqueを使えば 1,2 となりますが、sortをせずに一気に重複変数を消すアルゴリズムはありますでしょうか? このようなアルゴリズムが必要なのは以下の通りです。 要素にa,bを持つ構造体A struct A{ int a; int b; }; で、まずaの値でソートし、次にbの値が重複しているものは消すプログラムを書いております。 例えば (a,b) = (2,2), (1,1) (3,1) の場合 (a,b)=(1,1) (2,2) としたいのですが、単純にuniqueを使うと連続した値しか重複判定をしないので、 (a,b)=(1,1) (2,2) (3,1) と(3,1)が残ってしまいます。 uniqueに変わる良い方法はありますでしょうか? 説明が下手で申し訳ございませんが、もしなにか良い方法がございましたらご教示お願いいたします。

  • UNIQUEをつけたときのINDEXテーブル

    テーブル作成時、カラムにUNIQUEをつけると自動でインデックステーブルが作成されますが、このインデックステーブルで、通常のselect検索も早くなるのでしょうか? 具体的には、ユニークなカラムidを持つテーブルtableA create table tableA( id INTEGER UNIQUE, some_column INTEGER ); を作ったあとで、そのidにあらためて CREATE INDEX id ON tableA (id); と、インデックスを張る必要があるのでしょうか。 よろしくお願いします。

  • どうしてUniqueのヘルプはみれないのでしょうか

    マクロの記録で、重複するレコードは無視するの記録を取ったら、 Sub Macro3() Range("A1:A200").AdvancedFilter Action:=xlFilterInPlace, Unique:=True End Sub が出来上がったのですが、Uniqueの意味が知りたくて選択してF1を押したら、 「キーワードが見つかりません。」になりました。 AdvancedFilterの部分でF1を押すと、Range.AdvancedFilter メソッドのヘルプが表示され舞いsた。 どうしてUniqueのヘルプはみれないのでしょうか? 当方エクセル2007です。

  • Arrayを並びかえる!?

    お世話になります。 $w をprint_rすると Array ( [0] => Array ( [email] => gmail.com ) [1] => Array ( [email] => yahoo.co.jp ) [2] => Array ( [email] => hotmail.com ) ) になり、$aは Array([0]=>yahoo.co.jp, [1]=>gmail.com, [2]=>infoseek.com) になります。 $wと$aをarray_diffをしようし、お互いに重複している値を消去し、消去するにはどうすればいいのでしょうか?

    • ベストアンサー
    • PHP
  • UNIQUE KEY user_name_inde

    サンプルのCREATE TABLE文 の中に、 UNIQUE KEY user_name_index(user_name) とあったのですが、意味を教えてください。  自分で調べた限りは、UNIQUEというのはあったのですが、  UNIQUE KEY が見つかりませんでした。  UNIQUE KEY は、UNIQUEと同義なのでしょうか?  あるいは、こういう書き方があるのでしょうか?  また、CREATE TABLEの中で、user_nameカラムを作成しているのですが、  user_name_index(user_name)では、何をしているのでしょうか?  user_name_indexと別の名前でUNIQUE KEYに設定しているのでしょうか?  それとも、_indexとついてるので、  この書き方だけで、ユニークインデックスなるものにしているのでしょうか?

    • ベストアンサー
    • MySQL
  • NULL か UNIQUE な列は作成可能?

    いつもお世話になっております。 テーブルの作成時に主キーのようにUNIQUEになるように 列を設定したいと思います。ただし値が設定された場合に のみUNIQUEとしたいのです。つまりNULLかUNIQUE。 そういうのは可能でしょうか? プログラム側で重複しないようにチェックする しかないですか?

  • 'PRIMARY KEY'と'UNIQUE()'の違いを教えて!

    CREATE TABLE等で出てくる'PRIMARY KEY'と'UNIQUE()'の違いが分かりません。 どちらも他の行と同じ値を登録させないためのものと認識しています。 どのように使い分けるのでしょうか。 あとINDEX()について教えてください。 これは挿入や更新のたびに、INDEXにした列の値の順に整列され、探索が高速になるものと認識しています。 これは'PRIMARY KEY'や'UNIQUE()'の列に対してもやらないといけないのですか。 テーブルは'PRIMARY KEY'や'UNIQUE()'に設定した列の値を基に随時整列されていると思っていたのですが・・・。 あと複数の列へINDEX()を設定することはできるのでしょうか。 その場合、どの列の値が優先的に整列されるのでしょうか。 複数列へINDEX()を設定するCREATE TABLEの書き方を、よろしければ教えてください。

    • ベストアンサー
    • MySQL
  • インデックス「いいえ」 インデックス「はい (重複

    アクセスのテーブルについて質問なんですが インデックス「いいえ」 インデックス「はい (重複あり)」 の違いはなんでしょう? はい (重複なし)にすると、インデックス「いいえ」 と見た目は変わらないけど、 検索や並べ替えをする時に若干早くなるって事でしょうか? インデックス「はい (重複なし)」にした場合は、 主キーと同様、重複した値を入力できないので 違いが一目瞭然にわかりました。

専門家に質問してみよう