今日の人気記事

  1. PHP + OAuthで Twitter botをつくってみよう
  2. PHPスクリプト - 基本的な記述方法 - 書き方の基本
  3. if、else、elseif - 条件分岐
  4. 配列を文字列に変換 - implode()
  5. 数値の小数点以下を処理(四捨五入・切り捨て・切り上げ) - round関数、floor関数、ceil関数

配列 異なる値を持つ要素を取得 - array_diff()、array_diff_assoc()

スポンサーリンク

プログラミング言語PHPで、指定した配列と他の配列の値を比較し、異なる値を持つ要素を取得する関数 array_diff()、値に加えて、キーも確認する array_diff_assoc()を紹介します。

array_diff関数

array array_diff ( array $array1 , array $array2 [, array $... ] )
指定した複数の配列の値を比較し、異なる値を持つ要素を取得します。
後述のarray_diff_assoc関数は、キーも確認します。
引数
$array1
比較元の配列を指定します。
$array2[, ...]
比較する配列を指定します。
返り値
$array1にあって、$array2[, ...]にない要素を配列で返します。
返される配列キーは維持されます。

サンプルコード

指定した複数の配列(ここでは、配列1と配列2の2つ)の値を比較し、異なる値を持つ要素を取得し、配列1にあって、配列2にない要素を取得するサンプルコードです。

array_diff( 配列1, 配列2 )
<?php
/* 配列を定義 */
$a = array('Debian', 'Ubuntu', 'CentOS', 'Fedora');
$b = array('Debian', 'Ubuntu', 'CentOS', 'RedHat');

/* 配列を比較 */
print_r( array_diff($a, $b) );
?>

実行結果です。
配列1($a)にあって、配列2($b)にない要素の値(ここでは、Fedora)が配列で返されます。

Array
(
    [3] => Fedora
)

array_diff_assoc関数

array array_diff_assoc ( array $array1 , array $array2 [, array $... ] )
指定した複数の配列の値・キーを比較し、異なる値・キーを持つ要素を取得します。
引数
$array1
比較元の配列を指定します。
$array2[, ...]
比較する配列を指定します。
返り値
$array1にあって、$array2[, ...]にない要素を配列で返します。
返される配列キーは保存されます。

サンプルコード

指定した複数の配列(ここでは、配列1と配列2の2つ)の値・キーを比較し、異なる値・キーを持つ要素を取得し、配列1にあって、配列2にない要素を取得するサンプルコードです。

array_diff_assoc( 配列1, 配列2 )
<?php
/* 配列を定義 */
$a = array('Debian', 'Ubuntu', 'a'=>'CentOS', 'Fedora');
$b = array('Debian', 'Ubuntu', 'b'=>'CentOS', 'RedHat');

/* 配列を比較 */
print_r( array_diff_assoc($a, $b) );
?>

実行結果です。
キーが異なる要素と値が異なる要素が配列で返されます。

Array
(
    [a] => CentOS
    [2] => Fedora
)

関連記事(一部広告含む)