どうして!削除したのになんかうまく表示されない…!?ってなったのでわかってうれしいっていうメモ。
使用する関数
- array_unique関数
- array_values関数
- array_filter関数
■例
配列には以下の要素がつめこまれているものとする。
$ary_zokusei =['聖','土','風','火','土','水'];
目的は下記の通りに表示させること。
聖、土、風、火、水
①まずは重複を削除する
重複を削除するには
$str = array_unique($ary_zokusei);
上記のコードを実行すると、$strの中身は以下のようになる。
str[0] = 聖
str[1] = 土
str[2] = 風
str[3] = 火
str[4] =
str[5] = 水
重複してない要素の数は5つなのでfor文で5回echoをまわしたいところだが、
このままfor文で5回回しても「水」は表示されない。
なぜなら、5番目の配列(str[4])は単に中身が削除されただけで「水」が5番目の配列に格納されていないから。
②空配列を除去する
空配列を除去するには
- array_values関数
- array_filter関数
を組み合わせる。
①で$strに重複排除された状態の配列が取得できたので
$unique_zokusei = array_values(array_filter($str));
上記のコードを実行すると$unique_zokuseiの中身は以下のようになるので目的を達成!
str[0] = 聖
str[1] = 土
str[2] = 風
str[3] = 火
str[4] = 水
ちなみに、上記組み合わせ関数は、分解すると以下のようになる。
1.array_filter関数でまず、空配列を除去
str[0] = 聖
str[1] = 土
str[2] = 風
str[3] = 火
str[5] = 水
2. array_values関数で配列の再割り振り。
str[0] = 聖
str[1] = 土
str[2] = 風
str[3] = 火
str[4] = 水