本文實(shí)例分析了PHP數(shù)組游標(biāo)實(shí)現(xiàn)對(duì)數(shù)組的各種操作。分享給大家供大家參考,具體如下:
如何不用foreach實(shí)現(xiàn)對(duì)數(shù)組實(shí)現(xiàn)循環(huán)?
答:我們只需要模擬foreach就行了,數(shù)組在執(zhí)行foreach循環(huán)的時(shí)候,是有一個(gè)游標(biāo)指向當(dāng)前數(shù)組循環(huán)到的值,
那如果我們能拿到這個(gè)游標(biāo),并且操作游標(biāo),使游標(biāo)前進(jìn)或者后退,那么我們就能不用foreach而實(shí)現(xiàn)循環(huán)數(shù)組
直接上代碼,清晰直觀:
<?php $arr = array('你','若','安','好','便','是','晴','天');//current()函數(shù)是取得游標(biāo)所在數(shù)組位置的值//next()是使游標(biāo)向數(shù)組的尾部移動(dòng)一格for(;$v=current($arr);next($arr)){ echo $v,'<br />';}/*返回你若安好便是晴天*///那么又如何使游標(biāo)2步2步一走呢?for(;$v=current($arr);){ echo $v,'<br />'; next($arr); next($arr);}//執(zhí)行結(jié)果,沒(méi)有反應(yīng),這是為什么呢?//原因是前面一個(gè)循環(huán)游標(biāo)已經(jīng)到了數(shù)組的最尾部了//因此,當(dāng)執(zhí)行current($arr)時(shí)總是返回false,//因此第二個(gè)循環(huán)是不會(huì)執(zhí)行的//因此這里我們會(huì)用一個(gè)reset()方法來(lái)使游標(biāo)重新指向數(shù)組的頭部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; }}/*返回你安若好安便好是便晴是天晴*///如何倒著循環(huán)呢?//這里要用到end()函數(shù)了,讓數(shù)組的游標(biāo)指向尾部end($arr);echo '<hr />';for(;$v=current($arr);prev($arr)){ echo $v,'<br />';}/*返回:天晴是便好安若你*///注意當(dāng)數(shù)組的值等于0,false,null,undefined,""時(shí),for循環(huán)的第二部會(huì)返回false,就會(huì)使循環(huán)終止reset($arr);echo '<hr />';$arr2 = array('你','若',0,'好','便','是','晴','天');for(;$v=current($arr2);next($arr2)){ echo $v,'<br />';}/*返回你若*/?> 除了這些還可以用key()函數(shù)得到游標(biāo)所指向的鍵。
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。

















