PHP foreach/for/while循环的比较

<?php
header('Content-Type: text/plain; charset=utf-8');
$arr = array('Apple','Boy','Car','Dog');
foreach($arr as $v) {
	echo $v.' ';
}
echo "\n";
$c = count($arr);
for($i=0;$i<$c;$i++) {
	echo $arr[$i].' ';
}
echo "\n";
$arr = array(
	'My'=>'Apple',
	'Your'=>'Boy',
	'His'=>'Car',
	'Her'=>'Dog'
);
foreach($arr as $k => $v) {
	echo $k.' '.$v."\n";
}
循环数字数组时,for须要事先count($arr)计算数组长度,须要引入自增变量$i, 每次循环都要进行条件判断$i<$c,而后自增$i++,输出数组元素时,$arr[$i]须要进行哈希操做. 而foreach循环数组时,指针会自动指向下一个元素, 不须要计算数组长度,没有条件判断和自增变量,调用元素时也没有哈希操做,因此性能确定要比for和while高. 另外,for和while对存在键值映射的关联数组无能为力.因此,遍历数组,首选foreach. foreach也是我PHP里最喜欢的关键字,由于它确实强大. array_map/array_filter/array_walk遍历数组的方式和foreach同样,但须要执行回调函数,因此也比foreach慢. 数组循环用foreach,知道循环次数通常用for,条件循环时则用while. 另外,foreach也能够用来遍历对象元素.