PHPの連想配列のキーと値をforeachでループしながら取得する方法

PHPで配列や連想配列をforeachでループしながらキーや値を取得する方法です。

 

この記事を読んでいる方は配列の中身を全てループして、1件1件なにかしらの処理をしたいのですよね?

古い記憶をたどると昔はforeachとか無かったと思うんです。Javaには無かっただけかな?

配列は要素数を取得して、for文で要素の数だけループするような書き方でした。

 

foreachを使えば自動的に全てループしてくれてキーと値も取得できます。

これを知ったときは感動でした!笑

今では一般的なんかな?

 

こんな便利なforeachの使い方についてご紹介します。

目次

PHPの連想配列のキーと値をforeachでループしながら取得する方法

[aside type=”normal”]foreach ($配列 as $値) {
echo $値;
}[/aside]

foreach は上記のように書きます。

$配列にループする配列を指定し、中身の値が$値に定義した変数に1つずつセットされます。

上記のコードのように書けば、全ての値が echo により出力されます。

 

[aside type=”normal”]foreach ($配列 as $キー => $値) {
echo $キー;
echo $値;
}[/aside]

キーも取得する場合は上記のように書きます。

これで配列に含まれる全てのキーと値がループされます。

 

連想配列の場合は$キーに文字列のキーがセットされます。

通常の配列の場合はインデックス値がセットされます。

 

簡単ですね!便利すぎて泣けてきます。

多次元配列の場合

多次元配列の場合はどうなるでしょうか。

実際にコードを書いて説明します。

$ary = array(
	"japan" => array("東京", "大阪", "北海道", "沖縄"),
	"usa" => array("ワシントン", "ニューヨーク", "ロサンゼルス"),
	"chile" => null
);

foreach ($ary as $key => $val) {
	echo "国は、{$key}<br />";
	if (is_array($val)) {
		foreach ($val as $val2) {
			echo "町は、{$val2}<br />";
		}
	} else {
		echo "町無し";
	}
}

多次元配列の場合は、foreach の中にまたforeachを書くようにして書きます。

このとき注意してほしいのが、2つ目の foreach の as の次に書く値を受け取る変数の変数名が、1つ目と重複しないことです。

これはよくあるミスで、変数名が重複すれば当然前の変数に上書きされてしまいます。

そうなるとバグの元になってしまうのは容易に想像ができますね。

 

is_array() は配列かどうかを判定する関数です。

1つ目のループが配列ならば2つ目のループに入るようにしています。

 

ちなみに上記のものをWEBページに出力すると以下のようになります。

国は、japan
町は、東京
町は、大阪
町は、北海道
町は、沖縄
国は、usa
町は、ワシントン
町は、ニューヨーク
町は、ロサンゼルス
国は、chile
町無し

色々なところに旅行したいですね(笑)

まとめ

配列のキーと値を全てループして取得するには foreach を使う。

多次元配列のときは、foreachの中にforeachを書く。

変数名の重複に気をつける。

この記事を書いた人

ライターのプロフィールが入ります。このライター情報を入れたくない場合は管理画面の ユーザー > あなたのプロフィールの「プロフィール情報」を未入力にすれば表示されません。逆に「プロフィール情報」を入力することでライター情報を表示できます。

コメント

コメントする

CAPTCHA


目次
閉じる