數組遊標實現對數組的各類操做(PHP學習)

如何不用foreach實現對數組實現循環?php

答:咱們只須要模擬foreach就好了,數組在執行foreach循環的時候,是有一個遊標指向當前數組循環到的值,數組

      那若是咱們能拿到這個遊標,而且操做遊標,使遊標前進或者後退,那麼咱們就能不用foreach而實現循環數組函數

  直接上代碼,清晰直觀:blog

<?php 

$arr = array('你','若','安','好','便','是','晴','天');
//current()函數是取得遊標所在數組位置的值
//next()是使遊標向數組的尾部移動一格
for(;$v=current($arr);next($arr)){
	echo $v,'<br />';
}
/*
返回
你
若
安
好
便
是
晴
天
*/
//那麼又如何使遊標2步2步一走呢?
for(;$v=current($arr);){
	echo $v,'<br />';
	next($arr);
	next($arr);
}
//執行結果,沒有反應,這是爲何呢?
//緣由是前面一個循環遊標已經到了數組的最尾部了
//所以,當執行current($arr)時老是返回false,
//所以第二個循環是不會執行的
//所以這裏咱們會用一個reset()方法來使遊標從新指向數組的頭部
reset($arr);
echo '<hr />';
for(;$v=current($arr);){
	echo $v,'<br />';
	next($arr);
	next($arr);
}
//那麼又如何走2步,退一步呢?
reset($arr);
echo '<hr />';
for($flag=true;$v=current($arr);){
	echo $v,'<br />';
	if($flag){
		next($arr);
		next($arr);
		$flag=false;
	}else{
		prev($arr);
		$flag=true;
	}
}
/*
返回
你
安
若
好
安
便
好
是
便
晴
是
天
晴
*/

//如何倒着循環呢?
//這裏要用到end()函數了,讓數組的遊標指向尾部
end($arr);
echo '<hr />';
for(;$v=current($arr);prev($arr)){
	echo $v,'<br />';
}
/*
返回:
天
晴
是
便
好
安
若
你
*/
//注意當數組的值等於0,false,null,undefined,""時,for循環的第二部會返回false,就會使循環終止
reset($arr);
echo '<hr />';
$arr2 = array('你','若',0,'好','便','是','晴','天');
for(;$v=current($arr2);next($arr2)){
	echo $v,'<br />';
}
/*
返回
你
若
*/
?>

  除了這些還能夠用key()函數獲得遊標所指向的鍵for循環

相關文章
相關標籤/搜索