- ベストアンサー
array_uniqueしたあとインデックスを振りなおす
array_uniqueで重複したものを取り除いても、 インデックス情報は保持されますが、 これを 順番に1,2,3...と振りなおす方法があったら教えてください。 よろしくお願いします!
- みんなの回答 (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));
その他の回答 (3)
- masa6272
- ベストアンサー率66% (93/140)
この、array_merge関数では、ダメですか? スマートって・・・どんな方法をお望みですか?
お礼
すみません! こちらのやり方がいけないのかもしれませんが、 array_mergeではうまくいきませんでした; たとえば Array ( [0] => リンゴ [1] => リンゴ [2] => バナナ ) このような配列を array_uniqueすると Array ( [0] => リンゴ [2] => バナナ ) このようになりますが、 そうではなくて Array ( [0] => リンゴ [1] => バナナ ) のようにしたいのです。 no.1で回答いただいたように forで配列に入れなおせば実現できるのですが、 これを一発でできる関数などがないかな、という質問でした。 こちらの理解力不足で、すみません;;
- masa6272
- ベストアンサー率66% (93/140)
<?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) } こういうことをやりたいんでしょうか?
お礼
そのとおりです! なにかスマートな方法はありますでしょうか?
- SAYKA
- ベストアンサー率34% (944/2776)
別の配列にforとかで回して詰め直す じゃない?
お礼
やはりそれしか無いですか・・・ 何かそういう関数があるかな、と思ったのですが; 回答ありがとうございます!
お礼
こちらの間違いだったようで $array = array_merge(array_unique($array)); のように書くことで 思っていたとおりの結果を実現できました!! なんども回答していただいて、ほんとうにありがとうございました!!