Top > Blog > 2010-02-05
Last-modified: Fri, 05 Feb 2010 15:15:05 JST

PHP 配列のキーがnull

バグ取り中にテストしてみたこと。PHPのバージョンは5.3.1。

$a[''] = 0;
$a[null] = 1;

print_r($a);

上のコードの結果は、

Array
(
    [] => 1
)

となるので、nullが空文字列に変換されるんだね。コードを短く書きたい場合なんかに、利用できるのかも。まぁ、こういうのを使おうとするのはやめた方がいいんだろうけどね。


追加で数値と文字列についてもちょっと調べる。

$a[''] = 0;
$a[null] = 1;

$a[0] = 2;
$a['0'] = 3;

$a[1] = 4;
$a['1.0'] = 5;

$a[002] = 6;
$a[2.1] = 7;

print_r($a);

このコードの結果は、

Array
(
    [] => 1
    [0] => 3
    [1] => 4
    [1.0] => 5
    [2] => 7
)

となる。単に文字列にされるのではなく、int型になってから、文字列にしてるって理解するといいのかな。


最後に、foreachでキーを取り出す場合を調べておく。さっき配列設定に、

foreach($a as $key => $value) {
	$is_null = is_null($key) ? "T" : "F";
	$is_int = is_int($key) ? "T" : "F";
	$is_string = is_string($key) ? "T" : "F";
	echo "$key : null? $is_null, int? $is_int, string? $is_string \n";
}

上記のコードを追加すると、

[] : null? F, int? F, string? T 
[0] : null? F, int? T, string? F 
[1] : null? F, int? T, string? F 
[1.0] : null? F, int? F, string? T 
[2] : null? F, int? T, string? F

こうなる。整数に変換できるときは、整数型でくれるらしい。




コメント

適当に書いて頂いて構いません。スパム対策があるので、書き込めない場合があります。また、ボタンを押した後にしばらく時間がかかります。

新規コメント(ラジオボタンで親コメント選択可)
お名前

現在、コメントはありません