トップ  »  東京Webデザイナー日記リターンズ  »  PHP  »  34歳からの、PHPの手ほどき003

34歳からの、PHPの手ほどき003

PHPの配列には二種類ある。

インデックスとは、配列の中の個別のデータを識別するための印である。

(ただの)配列の例

<?php
	$tea[1] = "日本茶";
	$tea[2] = "紅茶";
	$tea[3] = "烏龍茶";
?>

インデックスを指定しないで定義をすると、インデックスが「0(ゼロ)」から並ぶことになる。

<?php
	$tea[] = "日本茶"; //これは、$tea[0]
	$tea[] = "紅茶"; //これは、$tea[1]
	$tea[] = "烏龍茶"; //これは、$tea[2]
?>

連想配列(インデックスが文字列の配列)の例

<?php
	$crema["age"] = "34";
	$crema["occupation"] = "デザイナー";
	$crema["hobby"] = "ダンス";
?>

関数を使って配列を一気に作る方法もあるが、配列を扱う関数とまとめて、後で勉強する。

配列の処理の仕方には、幾つか定型的なものがあるので丸暗記すること。

(ただの)配列は、ほとんどの場合、forループと組み合わせて使う。連想配列は、whileと組み合わせて使うことが多い【2008年5月12日追記】elfさんからいただいたトラックバックを読ませていただき、色々調べてみたところ、(ただの)配列でも連想配列でもforeachを使うことが普通のようです。訂正させていただきます。 (このあたりは、後で「流れ制御」を学習する時にやるらしい)。

配列に関する実験

定義されていない配列要素を表示するとどうなるか?既存の配列に続いてインデックス無しの配列を定義すると何が起こるか?

<?php
	$tea[1] = "日本茶";
	$tea[2] = "紅茶";
	$tea[4] = "烏龍茶";
	
	echo "0->$tea[0]<br />";
	echo "3->$tea[3]<br />";
	echo "5->$tea[5]<br />";
	
	$tea[] = "ほうじ茶";
	$tea[] = "マテ茶";
	
	echo "0->$tea[0]<br />";
	echo "3->$tea[3]<br />";
	echo "5->$tea[5]<br />";
	echo "6->$tea[6]<br />";
?>

これを動かすと、以下のような結果が出力された。

0->
3->
5->
0->
3->
5->ほうじ茶
6->マテ茶

最初の3行が意味するものは、定義していない配列要素にアクセスしようとしてもプログラム処理が止まらないというのがPHPの「お気楽な」部分だということ(Cでは、このようなことをすると、プログラムが強制終了させられる)。

最後の4行が意味するものは、インデックス無しの配列要素を定義すると常に最終要素として取り扱われるということ。

[2008年5月 9日]   はてなブックマーク - 34歳からの、PHPの手ほどき003

トラックバック(1)

[PHP] あんまりfor使わない(よくきたはてダ)のトラックバック

(ただの)配列は、ほとんどの場合、forループと組み合わせて使う。連想配列は、whileと組み合わせて使うことが多い(このあたりは、後で「流れ制御」を学...[2008年5月11日 10:02]

続きを読む»

このブログ記事に対するトラックバックURL

http://cremadesign.jp/mt401/mt/mt-tb.cgi/803

コメント(1)

tetsunosuke :2008年6月30日 20:06

>定義していない配列要素にアクセスしようとしてもプログラム処理が止まらないというのがPHPの「お気楽な」部分だということ

php.iniで
error_reporting = E_ALL

にしていると、NOTICEが出ますよ

多分現在はerror_reporting = E_ALL & ~E_NOTICEになっているのかと思います。予期せぬ動作にならぬよう、E_ALL、もしくはE_ALL | E_STRICTが良いです。

コメントする

このページの先頭へ

東京ナイロンガールズ

比較的人気の記事

crema design menu