• ベストアンサー

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

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

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

  • ベストアンサー
  • 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