スライドショー

【PHP入門】配列の重複した値を削除する(array_unique)

PHPでは配列を使用してさまざまな処理が可能です。

この記事では、

・array_unique関数を使用して重複した値を削除する方法
・連想配列の重複した値を削除する方法

という基本的な内容から、

・数値と文字列が混在した配列を数値として比較する方法

などの応用的な使い方に関しても解説していきます。

今回はそんなarray_unique関数の使用方法について、わかりやすく解説します!

配列の重複した値を削除する

ここではarray_unique関数を使用して、配列の重複した値を削除する方法を紹介します。

array_uniqueの使い方

配列から重複した値を削除したい場合は、array_unique関数を使用します。

array_unique関数は第一引数に対象の配列を指定し、第二引数にソートのオプションを使用して、ソートの挙動を変更します。

array_unique( $配列 [, ソートフラグ ] )

以下にarray_unique関数を使用して、配列の重複した値を削除する処理を記述します。

<?php

$fruits1 = [ 'apple', 'orange', 'melon', 'banana', 'melon'];

//array_uniqueを使用して、重複した値を削除する
$fruits2 = array_unique($fruits1);

//実行結果
foreach($fruits2 as $value){
  echo $value;
  echo '<br>';
}

?>
実行結果
apple
orange
melon
banana

連想配列の重複した値を削除する

array_unique関数で連想配列の重複した値を削除したいときも、使い方は基本的に1次元配列と同様です。

以下にarray_unique関数を使用して、連想配列の重複した値を削除する方法を記述します。

<?php

$fruits1 = [ 1=>'apple', 2=>'orange', 3=>'melon', 4=>'banana', 5=>'melon'];

//array_uniqueを使用して、重複した値を削除する
$fruits2 = array_unique($fruits1);

//実行結果
foreach($fruits2 as $key => $value){
  echo $key.' : '.$value;
  echo '<br>';
}

?>
実行結果
1 : apple
2 : orange
3 : melon
4 : banana

なお、array_unique関数は多次元配列の使用は想定していませんので注意しましょう。

数値として比較する

array_unique関数は第二引数にソートフラグを指定することで、ソート方法を指定することができます。

SORT_REGULAR:通常(型変換しない)の比較
SORT_NUMERIC:数値に変換して比較
SORT_STRING:文字列に変換して比較
SORT_LOCALE_STRING:現在のロケールにもとづいて文字列として比較

以下にarray_unique関数の第二引数にSORT_NUMERICを指定して、数値と文字列が混在した配列の重複チェック処理の方法を記述します。

<?php

$value_array1 = [100, '0100', 200, '00400', 300, 400];

$value_array2 = array_unique($value_array1);

echo 'オプション指定なし:';
var_dump($value_array2);
echo '<br>';

//SORT_NUMERICを指定して比較する
$value_array3 = array_unique($value_array1, SORT_NUMERIC);

echo 'オプション指定あり:';
var_dump($value_array3);

?>
オプション指定なし:array(6) { [0]=> int(100) [1]=> string(4) "0100" [2]=> int(200) [3]=> string(5) "00400" [4]=> int(300) [5]=> int(400) } 
オプション指定あり:array(4) { [0]=> int(100) [2]=> int(200) [3]=> string(5) "00400" [4]=> int(300) }

サンプルでは配列に文字列で'0100'、'00400'などがありますが、array_unique関数の第二引数で数値比較のフラグSORT_NUMERICを指定することで、それぞれ数値の100、400に変換して比較が行われます。

array関数についてもっと詳しく知りたい方へ

配列を操作するさまざまな関数の使い方については、以下の記事にまとめていますので、ぜひ参考にしてくださいね!

まとめ

ここでは、array_unique関数を使用して配列の重複した値を削除する方法や、オプションを指定して削除する方法を解説しました。

array_unique関数は、配列から重複した値のみを削除したい場合に便利な関数ですので、この機会にぜひ覚えておきましょう!

もし、array_unique関数の使い方を忘れてしまったら、この記事を思い出してくださいね!

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

ヤマシタ

システムエンジニアとして10年勤務→フリーランスへ。現在は侍ブログ編集部としてこれまでに200記事以上の記事を執筆。
大規模システム開発からWebアプリ開発まで経験あり。最近ではPythonの機械学習に挑戦中。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説