PHPのこと

【PHP】配列の重複を削除して配列を再構築するには

PHP

どうして!削除したのになんかうまく表示されない…!?ってなったのでわかってうれしいっていうメモ。

使用する関数

  • array_unique関数
  • array_values関数
  • array_filter関数

■例

配列には以下の要素がつめこまれているものとする。

$ary_zokusei =['聖','土','風','火','土','水'];

目的は下記の通りに表示させること。

聖、土、風、火、水

①まずは重複を削除する

重複を削除するには

  • array_unique関数
  • を使う。

    $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] = 水


    おすすめ