1.函数的作用:返回数组当前元素位置的下一个元素

2.函数的参数:

  @param array &$array

3.

例子一:数组拷贝时,内部指针的位置也一起拷贝

 <?php
$arr1 = ['last','next'];
next($arr1);
$arr2 = $arr1;
echo "Pointer of arr1 is " .key($arr1) .". The value is '" . current($arr1) ."'\n";
echo "Pointer of arr2 is " .key($arr2) .". The value is '" . current($arr1) ."'\n";

例子二: foreach 之后数组内部指针的位置不重置

 <?php
$arr1 = ['last','next'];
foreach($arr1 as $key => $value){
echo "Number $key's value : $value\n";
}
$str = is_null(key($arr1));
echo "The current key of the array of arr1 is " . ($str ? 'null' : $str) ;

例子三:

 <?php
$arr1 = ['last','next'];
next($arr1);
$arr2 = array_values($arr1); echo "The pointer's position of the array of arr1 is " .key($arr1) . "\n";
echo "The pointer's position of the array of arr1 is " .key($arr2) . "\n";

例子四:接下来是比较奇异的两个地方,传数组参数给函数,看看指针的位置的情况:

1)指针重置的情况:

 <?php
function testPointerPosition($array){
echo "The current element of array in function is '" .current($array)."' and current key is " .key($array)."\n";
} $arr1 = ['last','next'];
next($arr1);
next($arr1);
testPointerPosition($arr1);

2)指针未重置的情况:

 <?php
function testPointerPosition($array){
echo "The current element of array in function is '" .current($array)."' and current key is " .key($array)."\n";
} $arr1 = ['last','next'];
next($arr1);
testPointerPosition($arr1);

例子五:有的时候使用next()函数之后,你想判断该元素是不是存在,结果你这么用:

 <?php
$arr = [1,false];
next($arr);
if(current($arr)){
echo "The element exist!\n";
}else{
echo "The element doesn't exist!\n";
}

刚好有个 false 元素,就有了错误的输出。所以应该这么用:

 <?php
$arr = [1,false];
next($arr);
if(key($arr) === false){
echo "Current element doesn't exist!\n";
}else{
echo "Current element exist!\n";
}

记住用 “===” 符号。数组不会有键值为false的类型的,即使你初始化的时候,用false作键值,内部也会将其解释为 0,并覆盖先前的键值为 0 的元素。

随机推荐

  1. ios 各个手机型号尺寸及分辨率适配

    常用宏 // 判断是否是ipad #define isPad ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdio ...

  2. centos7 supervisor管理redis

    centos7 supervisor管理redis 标签(空格分隔): linux,redis 概念 Supervisor 相当强大,提供了很丰富的功能,不过我们可能只需要用到其中一小部分 super ...

  3. springcloud config配置读取优先级

    情景描述 最近在修复Eureka的静态页面加载不出的缺陷时,最终发现是远程GIT仓库将静态资源访问方式配置给禁用了(spring.resources.add-mappings=false).虽然最后直 ...

  4. Node 与JS的区别

    1.nodejs是运行于服务器端的:2.global:代表node当中的一个全局对象,类似于浏览器当中的window,定义全局对象:global.a:3.作用域:nodejs中一个文件就是一个作用域: ...

  5. filebeat相关registry文件内容解析

    filebeat的registry文件中存放的是被采集的所有日志的相关信息. linux中registry中一条日志记录的内容如下 {"source":"/var/log ...

  6. FPipe端口转发

    目录 0x01 FPipe介绍 0x02 端口转发 0x03 msf正向上线 注: 边界机器 win08 192.168.222.175 内网机器 win7 192.168.222.137 msf机器 ...

  7. Android Studio [登陆界面]

    EdittextActivity.class package com.xdw.a122; import android.support.v7.app.AppCompatActivity; import ...

  8. Spring boot 官网学习笔记 - 开发第一个Spring boot web应用程序(使用mvn执行、使用jar执行)

    Creating the POM <?xml version="1.0" encoding="UTF-8"?> <project xmlns= ...

  9. 站内搜索(ELK)之数据表字典类型字段的索引思路

    数据表字典类型的字段,如人员表中的“性别”.流程表中的“处理状态”,此类字段中的值高度重复,不建议放到可检索的索引字段中,原因如下: 若数据表字典类型字段的值索引到单独的索引字段中,因字典数据字符数一 ...

  10. 使用apache的poi来实现数据导出到excel的功能——方式二

    此次,介绍利用poi与layui table结合导出excel.这次不需要从数据库中查询出来的数据进行每一行的拼接那么麻烦,我们这次将标题定义一个id值,对应从数据库中查找出来的字段名即可. 1.po ...