PHP next
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 的元素。
随机推荐
- Hive bucket表
Hive 桶 对于每一个表(table)或者分区, Hive可以进一步组织成桶,也就是说桶是更为细粒度的数据范围划分.Hive也是 针对某一列进行桶的组织.Hive采用对列值哈希,然后除以桶的个数求余 ...
- eclipse下mybatis-generator-config插件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration ...
- 05.Django基础五之django模型层(一)单表操作
一 ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人 ...
- Docker下实战zabbix三部曲之一:极速体验
对于想学习和实践zabbix的读者来说,在真实环境搭建一套zabbix系统是件费时费力的事情,本文内容就是用docker来缩减搭建时间,目标是让读者们尽快投入zabbix系统的体验和实践: 环境信息 ...
- shell 获取当前目录下的jar文件
1.示例 function getDir() { ` do fileName=$"/"$item if [ -d $fileName ] then echo $fileName&q ...
- Angular 开发NPM第三方包
步骤: 创建第三方包 > 开发第三方包 > 测试第三方包 > 发布第三方包 > 使用第三方包 实例: 第一步:创建第三方包;; (创建项目,项目下创建第三方库) 1. 新建项目 ...
- 痞子衡嵌入式:飞思卡尔i.MX RTyyyy系列MCU特性那些事(5)- 划时代新品RT1170
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RTyyyy系列MCU的划时代新品i.MXRT1170. 自2017年开始,每年的6月25日恩智浦都会在北京举行微控制 ...
- 【福利】离散&C++&硬件一笔记合集
离散 C++ 硬件
- 解决Git报错:error: You have not concluded your merge (MERGE_HEAD exists).
Git fetch和git pull的区别, 解决Git报错:error: You have not concluded your merge (MERGE_HEAD exists). 2017年02 ...
- 夯实Java基础系列21:Java8新特性终极指南
本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...