連想配列(マップ)の要素を1つずつ処理するには (foreach / for / each_key / each_pair / each_value)

連想配列(マップ/ハッシュ/ディクショナリ)の要素を1つずつ順番に処理する方法。

Java

Java5からは、以下の拡張for文(foreach構文)とkeySetメソッドの組み合わせで可能。

for (String key: map.keySet()) {
  String value = map.get(key);
  ...;
}

Scala

Mapにあるforeachメソッドでできる。これはListと同じ。

Signature:

val map = Map("a" -> 1, "b" -> 2, "c" -> 3);
map.foreach { case (key, value) =>
  println("key=" + key + " value=" + value);
}
// 出力結果
// key=a value=1
// key=b value=2
// key=c value=3

PHP

PHPの連想配列は普通の配列と同じなので、配列で使えるforeachの構文をそのまま使える。キーと値の2つをループの中で使うには以下のように foreach の括弧の中で => で区切る。

foreach ($arr as $key => $value) {
  ...
}

コロンを使った記法も可能。

foreach ($arr as $key => $value):
  ...
endforeach;

foreach文 | PHP Manual
http://php.net/manual/ja/control-structures.foreach.php

Smarty

{foreach $arr as $key => $value}
  ...
{foreachelse}
  <!-- $arr に要素がひとつもなかった場合 -->
  ...
{/foreach}

Python

ディクショナリのitemsメソッドをfor文で回す。

for key, value in dic.items():
    ...

Ruby / JRuby

ハッシュの全エントリに対してキーのみを引数としてブロックを実行

hash.each_key do |key|
  ...
end

ハッシュの全エントリに対して値のみを引数としてブロックを実行

hash.each_value do |value|
  ...
end

ハッシュの全エントリに対してキーと値を引数としてブロックを実行

hash.each_pair do |key, value|
  ...
end

Perl

キーの配列を取得して foreach で回す方法

foreach my $key (keys %hash) {
  my $value = $hash{$key};
  ...;
}

キーと値のペアを each を使って回す方法

while ((my $key, my $value) = each(%hash)) {
  ...;
}

CoffeeScript

for key, value of map
  ...
このサイトは筆者(hydrocul)の個人メモの集合です。すべてのページは永遠に未完成です。
スポンサーリンク