foreach

  • インデックスに関する変数宣言を必要としない for についてここに書く。
  • いずれ XSLT なんかについてもここに足したい。

Java

  • 1.4まではなし。

Java5

String[] strs = { "a", "b", "c" };
for (String s : strs) { //配列について個別に処理
}
List<String> list = Arrays.asList({ "a", "b", "c" }); //※ここ不正確です
for (String s : list) { //Collection 実装クラスについて個別に処理。総称使いましょう
}
eclipseで試しに実行
import java.util.List;
import java.util.Arrays;
public class AsListTest { 
public static void main(String args[]) {
		String[] strs = { "a", "b", "c" };
		List<String> list = Arrays.asList(strs); //配列をコレクションの1つであるListに変換
		for(String obj : list) {
			System.out.print(obj); //実行結果 : abc
		}
	}
}
一度、配列の宣言をすれば実行できた。

PHP

  • as で配列から取り出す。
for ($array as $element) { //※逆かな?確認して下さい
}
foreach が使えるのは配列とオブジェクトだけであり、 別のデータ型や初期化前の変数に対して使うとエラーになります。
連想配列でも使えます。宣言の際は
foreach(配列 as 値){文}
とする必要があるようです。
実行されたサンプル
<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
    echo "Value: $value<br />\n";
    $value = $value * 2;
    echo "Value2: $value<br />\n";
} // $arr は array(2, 4, 6, 8) となります
unset($value); // 最後の要素への参照を解除します
?>
実行結果
Value: 1
Value2: 2
Value: 2
Value2: 4
Value: 3
Value2: 6
Value: 4
Value2: 8
  • foreach ループを終えた後でも、 $value は配列の最後の要素を参照したままとなります。 unset() でその参照を解除しておくようにしましょう。

javascript

出来るものもあるがjavaScript1.6以上必要。
var nameArray = ["高橋","平松","西尾","岩井","杉本"];
nameArray.forEach(addSan);
 // 「様」を追加する関数
function addSan(ele, index, array){
 document.write(ele + " 様<br>");
 }

for...in

似たような仕組みにforin文があり、これはjavaScript1.0から動作する。
しかしオブジェクト以外には使えず、プロトタイプを変更した配列の走査にも使うことができない。
<SCRIPT language="JavaScript">
Array.prototype.hoge = function() {};
for (var i in ['a', 'b', 'c']) {
  document.write(i); // 0, 1, 2, hoge が表示される
}
</SCRIPT>
最終更新:2013年06月18日 09:25