[+,==,====]配列演算子

公開日| 2015年4月19日   更新日| 2015年4月19日   コメントはありません。

今回は、phpの言語特徴である配列(array)です。
phpでは、配列をarrayで表し、配列を制御するための関数も多く提供されています。

今回は、配列の演算子での動作について簡単に解説したいと思います。

配列の基本

まずは、配列の基本を理解しましょう。

配列には、キーとなる情報と、そのキーに対応した値が割り付けられます。

$list = array(
	1 => 'value=1' ,
	2 => 'value=2' ,
	3 => 'value=3' ,
);
var_dump($list);

これを実行すると、

C:\ > php array_base.php
array(3) {
  [1]=>
  string(7) "value=1"
  [2]=>
  string(7) "value=2"
  [3]=>
  string(7) "value=3"
}
C:\ >

のようになります。

ここで、注意すべきは、キーも値も型を意識しないことです。
このあたりがphpらしいあいまいさです。javaなどと違いますね。

つまり、

$list = array(
	'val1' => 1.1 ,
	'val2' => 2.2 ,
	'val3' => 3.3 ,
);
var_dump($list);

これを実行すると、

C:\ > php array_base.php
array(3) {
  ["val1"]=>
  float(1.1)
  ["val2"]=>
  float(2.2)
  ["val3"]=>
  float(3.3)
}
C:\ >

のようになります。

ちゃんと文字列のキーで、floatの値で設定されてます。

配列の演算子

先のように配列は簡単につくることができます。

この配列を制御するための基本は、配列の演算子です。配列の演算子には、+,==,===,!=,!==,<>があります。

早速、それぞれについて簡単に解説してみます。

$a + $b 結合 $a および $b を結合する。 $a == $b 同等 $a および $b のキー/値のペアが等しい場合に TRUE。 $a === $b 同一 $a および $b のキー/値のペアが等しく、その並び順が等しく、 かつデータ型も等しい場合に TRUE。 $a != $b 等しくない $a が $b と等しくない場合に TRUE。 $a <> $b 等しくない $a が $b と等しくない場合に TRUE。 $a !== $b 同一でない $a が $b と同一でない場合に TRUE。
  • + : 結合演算子 (右引数と 左引数を結合したものを返します)
  • == : 比較演算子 (右引数と 左引数のキー/値のペアが等しい場合に TRUEを返します)
  • === : 比較演算子 (右引数と 左引数のキー/値のペアが等しく、その並び順が等しく、 かつデータ型も等しい場合にTRUEを返します)
  • != : 比較演算子 (右引数と 左引数のキー/値のペアが等しない場合にTRUEを返します)
  • <> : 比較演算子 (右引数と 左引数のキー/値のペアが等しない場合にTRUEを返します)
  • !== : 比較演算子 (右引数と 左引数のキー/値のペアが等しない、あるいは、その並び順が等しくない、あるいはデータ型が等しくない場合にTRUEを返します)

結合演算子

$list1 = array(
	1 => 'value=1' ,
	2 => 'value=2' ,
	3 => 'value=3' ,
);
$list2 = array(
	'val1' => 1.1 ,
	'val2' => 2.2 ,
	'val3' => 3.3 ,
);

$list1 = $list1+$list2;
var_dump($list1);

これを実行すると、

C:\ > php array_add.php
php array_add.php
array(6) {
  [1]=>
  string(7) "value=1"
  [2]=>
  string(7) "value=2"
  [3]=>
  string(7) "value=3"
  ["val1"]=>
  float(1.1)
  ["val2"]=>
  float(2.2)
  ["val3"]=>
  float(3.3)
}
C:\ > 

となります。
簡単ですよね。

また、上記のphpは、+=でも同じように記述することができます。

$list1 = array(
	1 => 'value=1' ,
	2 => 'value=2' ,
	3 => 'value=3' ,
);
$list2 = array(
	'val1' => 1.1 ,
	'val2' => 2.2 ,
	'val3' => 3.3 ,
);

$list1 += $list2;
var_dump($list1);

これを実行すると、

C:\ > php array_add.php
php array_add.php
array(6) {
  [1]=>
  string(7) "value=1"
  [2]=>
  string(7) "value=2"
  [3]=>
  string(7) "value=3"
  ["val1"]=>
  float(1.1)
  ["val2"]=>
  float(2.2)
  ["val3"]=>
  float(3.3)
}
C:\ > 

と同じ結果を得ます。


比較演算子

$list1 = array(
	1 => 'value=1' ,
	2 => 'value=2' ,
	3 => 'value=3' ,
);
$list2 = array(
	2 => 'value=2' ,
	1 => 'value=1' ,
	3 => 'value=3' ,
);

$check1 = ($list1==$list2);
var_dump($check1);
$check2 = ($list1===$list2);
var_dump($check2);

これを実行すると、

C:\ > php array_add.php
bool(true)
bool(false)
C:\ > 

となります。
===は、ちゃんと順番までチェックしているのがわかりますね。

さらに、

$list1 = array(
	1 => 'value=1' ,
	2 => 'value=2' ,
	3 => 'value=3' ,
);
$list2 = array(
	2 => 'value=2' ,
	1 => 'value=1' ,
	3 => 'value=3' ,
);

$check1 = ($list1!=$list2);
var_dump($check1);
$check1_2 = ($list1<>$list2);
var_dump($check1_2);
$check2 = ($list1!==$list2);
var_dump($check2);

これを実行すると、

C:\ > php array_add.php
bool(false)
bool(false)
bool(true)
C:\ > 

となります。

この配列が非常に扱いやすいところが、phpの良いところですね。

ちょっと、こぼれ話として、配列の-演算子は、どうなるかというと
Fatal error: Unsupported operand types
とちゃんとエラー処理してくれます。

自分のようなおっちょこちょいは、タイプミスはありますからね。ちゃんとはじいていくれますから安心です。


コメント

口コミ・評判を投稿 :

ブラウザの JavaScriptが無効となっている場合、コメントの投稿はできません。
コメントを投稿するには、JavaScriptを有効にしてください

お名前 *

メールアドレス *
(口コミ・評判欄には、表示されませんが入力が必要です。)

サイトアドレス



  • ソーシャルブックマーク

  • はてなブックマークへ追加するはてな登録数
ページトップへ