PHPで3つ以上の値が全て等しいかどうかの判定方法

PHP

PHPで3つ以上の変数の値が等しいかどうかを判定する方法についてまとめます。

通常if文などで2つの変数を比較する場合は、

if ($x == $y) {
// 等しい場合の処理
}

という風に書けますが、3つ以上の変数が同じ場合となると、

if ($x == $y AND $y == $z) {
// 等しい場合の処理
}

となり、さらに数が増えると式が長くなっていってしまいます。

そういった場合に、シンプルに変数を比較する方法がありますよ。

array_unique()を使う

array_unique
入力した配列の値に重複があれば、その値を削除し、その配列を返すという関数です。
例えば、

array(8) {
  [0]=>
  string(1) "A"
  [1]=>
  string(1) "A"
  [2]=>
  string(1) "A"
  [3]=>
  string(1) "A"
  [4]=>
  string(1) "A"
  [5]=>
  string(1) "A"
  [6]=>
  string(1) "A"
  [7]=>
  string(1) "A"
}

という配列があるとして、

$array = array_unique($array);

のような形で、array_unique関数に配列を通してあげると、
配列の重複した値が無くなって、

array(1) {
  [0]=>
  string(1) "A"
}

のような感じで返ってきます。

そして、その返ってきた値をcount()関数で配列の値の数をカウントすると、
配列の値が全て同じだった場合は1となるため、

if (count(array_unique($array)) === 1) {
    // 全て同じ値である場合
} else {
    // 値が異なっていた場合
}

という感じで比較できるのです。

サンプルコード

入力されたパスワードが$inputに入っているとした時、
入力されたパスワードの文字列が全て同じだった場合にNGを出力するというコードです。
例えば、入力がAAAAAAAAだった場合は、NGとなり、
入力がAAAAaaaaだった場合は、OKとなります。