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. grunt任务之seajs模块打包
  2. event
  3. Java线程:创建与启动
  4. StackOverflow发布年度开发者调查报告:JavaScript备受欢迎
  5. free store VS heap(自由存储区VS堆)
  6. Robot Framework-Windows版本安装
  7. 替换空格-请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
  8. jxl 导入excel以及日期格式处理
  9. Linux学习-0627
  10. jboss7.1.1配置数据库mysql与oracle
  11. Java调用阿里云短信通道服务【千锋】
  12. JAVA学习笔记(2)—— java初始化三个原则
  13. Vue(二十五)打包后路径报错问题
  14. 编辑器-vim
  15. Qt5OpenGL.术语01
  16. Vue(一)
  17. R的常用命令
  18. SpringMVC作用域传值几种方式
  19. Delphi来实现一个IP地址输入控件
  20. Django入门与实践 1-16章总结

热门文章

  1. Java 内省(Introspector)和 BeanUtils
  2. 3、循环链表(java实现)
  3. Winform中使用zxing和Graphics实现自定义绘制二维码布局
  4. Eclipse中maven项目报错:org.springframework.web.filter.CharacterEncodingFilter
  5. String、StringBuffer、StringBulider的区别
  6. 即时聊天APP(二) - MainActivity
  7. AD 域服务简介(三)- Java 对 AD 域用户的增删改查操作
  8. XPath匹配含有指定文本的标签---contains的用法
  9. Day 7 vim 文件编辑与vim的使用
  10. 实践APP安全性检测(一):APK反编译