このページについて
このページではphpで使えるarray_diff系統の使い方をまとめて解説しています。
array_diff
array_diffは2つの配列を引数として受け取り、その配列を比較して存在しない要素を返します。
array_diff(配列1,配列2);
配列1と配列2はそれぞれどんなものでもOKです。配列1を元に、配列2を見てその中に存在しない要素を返します。実際に行うと以下のようになります。
連想配列や通常の配列の場合でも、値だけを比較するのでキーの一致不一致は考慮しません。なので上の画像で言うと値は100,200,100,300の3種類です。そして配列1に渡してあるのは$aで100と200、配列2に渡してある方は100と300で200が無いので、’b’=>200が出力されています。
この例のaとbを逆にすると、今度は300が存在しないので$bの300が出力されます。
そしてこのarray_diffは通常は一番上の配列しかチェックしません。多次元配列で階層がかなり深い場合は、添字指定で比較させる事ができます。
$a = [
[1,2,3,4],
[5,6,7,8]];
$b = [
[1,2,3,4],
[5,7,8]];
$c = array_diff($a[0],$b[0]);
$d = array_diff($a[1],$b[1]);
$e = array_diff($a[0],$b[1]);
$aと$bはそれぞれ多次元配列です。普通にarray_diffで$a,$bとするとエラーとなります。なので細かく指定する必要があるんですが、それが上の例となります。このように$a[0]や$b[1]などで指定します。
array_diff_assoc
array_diff_assoc関数は上のarray_diff関数と同じような使い方をしますが、こちらはキーの確認も含めた比較をします。上のarray_diffはキーの確認はせず、値のみの確認をします。その上で結果を返すんですが、こちらassoc関数はキーの確認もします。
array_diff_assoc(配列1,配列2);
基本的な構文は上記の通りです。実際に使うとこうなります。
この場合は$aの中にあるa=>100と、200を比較元にします。そして比較する$bにはb=>100と、300があります。この場合どちらも存在しないので、全て不一致として出力されます。
通常のarray_diffであればa=>100もb=>100もキーを無視するので一致するとして扱われますが、assocの場合はキーも含めた確認もするのでaもbも不一致となります。
まとめ
array_diffとarray_diff_assocはそれぞれ値のみを比較するか、キーも含めた比較をするかの違いがありますが、2つの配列を比較して出力する機能を持っています。それぞれ適した方を使いましょう。
- phpの基礎
- phpとは?JavaScriptとの違いは?みたいなことから、基本の書き方などを解説。
- echoとprint
- 画面に文字を出力する2種類の言語構造の使い方
- 変数
- phpで使える変数の扱い方などを解説しています。
- 変数のスコープ(有効範囲)
- 変数のスコープについての解説です。
- var_dump
- 変数の情報を見ることができる関数
- print_r
- 変数の情報をわかりやすい形式で表示する関数
- 配列と連想配列
- 配列と連想配列の書き方と、便利な関数の解説など。
- key
- 連想配列のキーを返してくれます。内部ポインタ関係あり。
- count
- 配列や連想配列の要素数を数えてくれる関数の使い方解説。
- ソート関数
- 配列に対してソートを行う関数の中から、代表的な5つの使い方解説です。
- array_reverse
- 配列の中身の順番を反転させる関数です。
- array_chunk
- 配列を指定した数で分割させるarray_chunk関数の使い方解説です。
- array_combine
- 2つの配列を足して1つの連想配列にする関数です。
- array_diff
- 2つの配列を比較して、存在しない値を出力する関数
- array_push
- 配列に対して後方に要素を追加する関数
- array_unshift
- 配列に対して先頭に要素を追加する関数。
- array_shift
- 配列の先頭の要素を取り出す関数。
- array_merge
- 複数の配列を統合して1次元の配列にする関数
- array_intersect
- 2つの配列を比較して、両方に共通するものを出力する関数
- include
- includeを使って別のphpファイルを読み込む方法の解説。
- if文
- if文を使って処理を変更させる方法の解説。
- switch文
- switch文を使って複数の処理分岐を行わせたい時に使います。
- forループ
- forループを使って同じ処理を行わせる方法の解説です。
- whileループ
- whileループを使って同じ処理を行わせる方法の解説と注意点。
- do-whileループ
- do-whileループを使って同じ処理を行わせる方法の解説です。
- foreachループ
- foreachループを使って配列内のアイテム全てに処理を行う方法の解説です。
- continue
- ループ処理の残りをスキップしつつ、ループの先頭に戻る制御構造
- ループのネスト構造(入れ子)
- ループの中にループを入れる書き方や考え方の解説。
- function
- functionを使って自作の関数を作成・使用する方法の解説。
- 引数の種類と書き方解説
- functionで扱う引数の種類と書き方を解説
- return
- returnの使い方と関数での使い方解説。
- class
- classを作成して変数と関数を1つにまとめる方法と使い方の解説。
- constructとdestruct
- classのインスタンス作成と同時に処理を行うconstructと、スクリプトの終了と同時に実行するdestructの解説です。
- インターフェイス
- インターフェイスという用語の解説と、実際の使い方解説
- トレイト
- コードを再利用するのに便利なトレイトの解説です。
- 列挙型
- プログラム中で使う変数名をあらかじめ定義しておく。そんな感じの型。
- PDOを使ってMySQLへ接続
- PDOを使ってMySQLへ接続し、データを取得する方法の解説です。
- データの加工と表示
- PDOでデータベースから取得したデータを加工して表示する方法の解説です。
- HTMLフォームのデータ受け取りと表示
- HTMLで作ったフォームからのデータの受け取り方法と、その表示方法の解説です。