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也可以用来遍历对象元素.

你可能感兴趣的:(PHP foreach/for/while循环的比较)