[array_key_exists,in_array]配列のチェック

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

今回は、配列(array)のチェック機能です。
phpでは、配列をarrayで表し、その配列のキー、値をチェックするための関数が標準で提供されています。

今回は、配列のチェックに仕方について簡単に解説したいと思います。

配列のキーと値の取り出し方基本

まず、配列のキーと値の取り出し方について、もっとも簡単な例をあげておきます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$list = array(
	3 => 'value=3' ,
	1 => 'value=1' ,
	2 => 'value=2' ,
);

//	foreachを使った取り出し方
foreach($list as $key => $val){
	var_dump($key);
	var_dump($val);
}

//	while と current key next を使った取り出し方
//	reset をしないとカレントのポインターがどこを向いているか保障されない
reset($list);
while( ($val=current($list))!==false ){
	$key = key($list);
	var_dump($key);
	var_dump($val);
	next($list);
}
foreach は、whileの処理を1元的に実施してくれるので、非常に簡潔に記述することができます。
whileを使っての取り出しは、必ず、ループ処理の前にresetを実行するのをわすれないようにしましょう。

これを実行すると、

C:\ >  php array_check_f1.php
int(3)
string(7) "value=3"
int(1)
string(7) "value=1"
int(2)
string(7) "value=2"
int(3)
string(7) "value=3"
int(1)
string(7) "value=1"
int(2)
string(7) "value=2"
C:\ >

のようになります。

いずれもキーと値が、きれに取り出せましたね。

これができれば、キーも値も簡単なロジックで存在するかどうかチェックすることができます。

配列のキーと値をforeachを使ってチェックする

ここで、簡単に配列のキーと値をforeachを使ってチェックをしてみましょう。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$list = array(
	3 => 'value=3' ,
	1 => 'value=1' ,
	2 => 'value=2' ,
);

foreach($list as $key => $val){
	if($key==2){
		echo "KEY EXIST!!\n";
	}
	if($val=='value=2'){
		echo "VALUE EXIST!!\n";
	}
}
ここでは、
  • キー情報が、数値2かどうかチェックしています。
  • 値情報が、文字列”value=2″かどうかチェックしています。
簡単なキー、値が存在するかのチェック処理を行っています。

これを実行すると、

C:\ >  php array_check_f2.php
KEY EXIST!!
VALUE EXIST!!
C:\ >

のようになります。

いずれもキーと値が、ちゃんとチェックできましたね。

さあ、ここからが、今回の本題です。この数行のプログラムを、それぞれ1つの関数に置き換えることができます。

配列のキーと値を関数を使ってチェックする

先の処理と同じことを関数 ( array_key_exists ,in_array ) を使って記述してみましょう。

1
2
3
4
5
6
7
8
$list = array(
	3 => 'value=3' ,
	1 => 'value=1' ,
	2 => 'value=2' ,
);

if(array_key_exists(2,$list))	echo "KEY EXIST!!\n";
if(in_array('value=2',$list))	echo "VALUE EXIST!!\n";

のように記述することができます。

早速、実行してみましょう。

C:\ >  php array_check_f2.php
KEY EXIST!!
VALUE EXIST!!
C:\ >

のようになります。

当然、同じ結果を得ます。

ここで使った関数

  • bool array_key_exists ( mixed $key , array $search )
    : 指定した key が配列に設定されている場合、 array_key_exists() は TRUE を返します。 key は配列添字として使用できる全ての値を使用可能です。

    key : 調べる値。
    search : キーが存在するかどうかを調べたい配列。
  • bool in_array ( mixed $needle , array $haystack [, bool $strict ] )
    : needle で haystack を検索します。

    needle : 探す値。
    needle が文字列の場合、 比較の際に大文字小文字は区別されます。
    haystack : 配列。
    strict : 三番目のパラメータ strict が TRUE に設定された場合、 in_array() は、haystack の中の needle の 型も確認します。
いかがだったでしょうか。

この辺りからは、自分でプログラムを書こうと思えば書けますが、もちろん、関数を使った方が効率的です。
知ってるか知らないかだけですが、結構、長めのプログラムを書きだすと、小さなことが大きく時間に影響してしまいます。
まずは、使って覚えていきましょう。


コメント

口コミ・評判を投稿 :

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

お名前 *

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

サイトアドレス



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

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