zoukankan      html  css  js  c++  java
  • 数组游标实现对数组的各种操作(PHP学习)

    如何不用foreach实现对数组实现循环?

    答:我们只需要模拟foreach就行了,数组在执行foreach循环的时候,是有一个游标指向当前数组循环到的值,

          那如果我们能拿到这个游标,并且操作游标,使游标前进或者后退,那么我们就能不用foreach而实现循环数组

      直接上代码,清晰直观:

    <?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()函数得到游标所指向的键

  • 相关阅读:
    视差插件parallarx
    经典幻灯片插件Swiper
    经典全屏滚动插件fullPage.js
    Dialog插件artDialog
    html5 canvas 做的一个时钟效果
    CSS3 Transitions, Transforms和Animation使用简介与应用展示
    微软官方下载地址
    Windows 7 下配置IIS,并且局域网内可访问(转载)
    C# 使用HttpWebRequest 实现文件的上传
    小图标网站
  • 原文地址:https://www.cnblogs.com/ggbd-lie/p/3269045.html
Copyright © 2011-2022 走看看