数组指针

1.介绍几个数组指针的函数

  • current() - 返回数组中的当前单元
  • end() - 将数组的内部指针指向最后一个单元
  • prev() - 将数组的内部指针倒回一位
  • reset() - 将数组的内部指针指向第一个单元
  • each() - 返回数组中当前的键/值对并将数组指针向前移动一步
<?php
$listArr = [
'1232','2456','7789','8976',
'5678','3456','2347','9876',
'3451','7744','2212','3214',
]; echo "第一个元素".key($listArr).'=>'.current($listArr).PHP_EOL;
next($listArr);
echo "第二个元素".key($listArr).'=>'.current($listArr).PHP_EOL;
next($listArr);
echo "第三个元素".key($listArr).'=>'.current($listArr).PHP_EOL;
end($listArr);
echo "最后一个元素".key($listArr).'=>'.current($listArr).PHP_EOL;
prev($listArr);//内部指针倒回一位
echo "倒数第二位".key($listArr).'=>'.current($listArr).PHP_EOL;
reset($listArr);
echo "第一个元素".key($listArr).'=>'.current($listArr).PHP_EOL;

输出结果

第一个元素0=>1232
第二个元素1=>2456
第三个元素2=>7789
最后一个元素11=>3214
倒数第二位10=>2212
第一个元素0=>1232

2.使用each循环数组

<?php
$listArr = [
'1232','2456','7789','8976',
'5678','3456','2347','9876',
'3451','7744','2212','3214',
]; //使用each方法遍历数组 reset($listArr);
while(list($key,$value) = each($listArr)){
echo "key:{$key},value:{$value}".PHP_EOL;
}

输出结果

key:0,value:1232
key:1,value:2456
key:2,value:7789
key:3,value:8976
key:4,value:5678
key:5,value:3456
key:6,value:2347
key:7,value:9876
key:8,value:3451
key:9,value:7744
key:10,value:2212
key:11,value:3214

3.使用数组指针取出当前值的下一个值,环形取

<?php

/**
* 使用数组的指针函数实现数据类循环队列读取数据
*/
$listArr = [
'1232','2456','7789','8976',
'5678','3456','2347','9876',
'3451','7744','2212','3214',
]; /**
* [getNextvalue 根据当前值获取数组值下一个值]
* @Author lisiqiong
* @DateTime 2019-04-25
* @param [type] $value [description]
* @return [type] [description]
*/
function getNextvalue($listArr,$value){
$count = count($listArr);
$keyArr = array_keys($listArr,$value);
$key = $keyArr[0];
if(($key+1)!=$count){
for($i=0;$i<=$key;$i++){
next($listArr);
}
}
return current($listArr);
} $value = getNextvalue($listArr,'2456');
echo "2456的下一个是{$value}".PHP_EOL; $value = getNextvalue($listArr,'3214');
echo "3214的下一个是{$value}".PHP_EOL;

运行结果

2456的下一个是7789
3214的下一个是1232

phper必知必会之数组指针(四)的更多相关文章

  1. Java面试必知必会:基础

    面试考察的知识点多而杂,要完全掌握需要花费大量的时间和精力.但是面试中经常被问到的知识点却没有多少,你完全可以用 20% 的时间去掌握 80% 常问的知识点. 一.基础 包括: 杂七杂八 面向对象 数 ...

  2. python网络爬虫,知识储备,简单爬虫的必知必会,【核心】

    知识储备,简单爬虫的必知必会,[核心] 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到桌 ...

  3. H5系列之History(必知必会)

    H5系列之History(必知必会)   目录 概念 兼容性 属性 方法 H5方法       概念     理解History Api的使用方式 目的是为了解决哪些问题   作用:ajax获取数据时 ...

  4. 第5节:Java基础 - 必知必会(下)

    第5节:Java基础 - 必知必会(下) 本小节是Java基础篇章的第三小节,主要讲述Java中的Exception与Error,JIT编译器以及值传递与引用传递的知识点. 一.Java中的Excep ...

  5. Elasticsearch必知必会的干货知识一:ES索引文档的CRUD

    ​ 若在传统DBMS 关系型数据库中查询海量数据,特别是模糊查询,一般我们都是使用like %查询的值%,但这样会导致无法应用索引,从而形成全表扫描效率低下,即使是在有索引的字段精确值查找,面对海量数 ...

  6. MySQL必知必会(第4版)整理笔记

    参考书籍: BookName:<SQL必知必会(第4版)> BookName:<Mysql必知必会(第4版)> Author: Ben Forta 说明:本书学习笔记 1.了解 ...

  7. 【MySQL 基础】MySQL必知必会

    MySQL必知必会 简介 <MySQL必知必会>的学习笔记和总结. 书籍链接 了解SQL 数据库基础 什么是数据库 数据库(database):保存有组织的数据的容器(通常是一个文 件或一 ...

  8. 必知必会之 Java

    必知必会之 Java 目录 不定期更新中-- 基础知识 数据计量单位 面向对象三大特性 基础数据类型 注释格式 访问修饰符 运算符 算数运算符 关系运算符 位运算符 逻辑运算符 赋值运算符 三目表达式 ...

  9. Java面试必知必会(扩展)——Java基础

    float f=3.4;是否正确? 不正确 3.4是双精度,将双精度赋值给浮点型属于向下转型,会造成精度损失: 因此需要强制类型转换: 方式一:float f=(float)3.4 方式二:float ...

  10. 闻道Go语言,6月龄必知必会

    大家好,我是马甲哥, 学习新知识, 我的策略是模仿-->归纳--->举一反三, 在同程倒腾Go语言一年有余,本次记录<闻道Go语言,6月龄必知必会>,形式是同我的主力语言C#做 ...

随机推荐

  1. ora2pg安装及卸载

    --ora2pg安装 tar xzf ora2pg-10.x.tar.gz  or tar xjf ora2pg-10.x.tar.bz2 cd ora2pg-10.x/ perl Makefile. ...

  2. SQL Server 自动化运维系列 - 监控磁盘剩余空间及SQL Server错误日志(Power Shell)

    需求描述 在我们的生产环境中,大部分情况下需要有自己的运维体制,包括自己健康状态的检测等.如果发生异常,需要提前预警的,通知形式一般为发邮件告知. 在所有的自检流程中最基础的一个就是磁盘剩余空间检测. ...

  3. 使用maven下载源码和doc(转)

    原文链接: http://blog.csdn.net/sxdtzhaoxinguo/article/details/46518295 http://blog.csdn.net/chengxusheji ...

  4. tomcat conf目录下文件的作用

    本文以apache-tomcat-6.0.26为准介绍 1.   web.xml: 默认(欢迎)文件的设置  配置包括:主要是配置servlet,包括初始化参数,设置session等 <serv ...

  5. koa 微信小程序 项目

    这个微信号入门, 应该能自己模仿做一个微信公众号了 另外 微信小程序开发 和 微信公众号h5嵌入 还是有区别的 h5嵌入在体验上和 微信小程序 差距还是比较大, 因为小程序直接调用了微信的原生组件, ...

  6. get_class

    <?phpclass foo {    function foo()    {    // implements some logic    }    function name()    {  ...

  7. SWIFT Tuple Pattern及Struct Pattern

    定义一个Tuple let color = (1.0,1.0,1.0,1.0) switch color{ case (0.0,0.5...1.0,let blue,_): //匹配第一个值为0.0第 ...

  8. linux C/C++服务器后台开发面试题总结

    一.编程语言 1.根据熟悉的语言,谈谈两种语言的区别? 主要浅谈下C/C++和PHP语言的区别: 1)PHP弱类型语言,一种脚本语言,对数据的类型不要求过多,较多的应用于Web应用开发,现在好多互联网 ...

  9. hog+svm+检测人(代替默认的参数)

    #include <iostream>#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui. ...

  10. 2N7002

    就相当于一个开关,当G>S的一定电压就导通,若没有达到就没有导通. 并且注意的是D脚不能直接接电压,中间要接一个电阻. 这用是G输入,S接地,D输出. 跟三极管差不多.分N和P