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 的元素。
随机推荐
- Metasploit工具----漏洞利用模块
漏洞利用是指由渗透测试者利用一个系统.应用或者服务中的安全漏洞进行的攻击行为.流行的渗透攻击技术包括缓冲区溢出.Web应用程序攻击,以及利用配置错误等,其中包含攻击者或测试人员针对系统中的漏洞而设计的 ...
- 松软科技课堂:SQL之NOTNULL约束
SQL NOT NULL 约束 NOT NULL 约束强制列不接受 NULL 值. NOT NULL 约束强制字段始终包含值.这意味着,如果不向字段添加值,就无法插入新记录或者更新记录. 下面的 SQ ...
- java动态代理之CGLIB实现
动态代理(CGlib 与连接池的案例) Cglib代理: 针对类来实现代理,对指定目标 产生一个子类 通过方法拦截技术拦截所有父类方法的调用. 我们要使用cglib代理必须引入 cglib的jar包 ...
- SpringBoot启动zipkin-server报错Error creating bean with name ‘armeriaServer’ defined in class path resource
目前,GitHub 上最新 release 版本是 Zipkin 2.12.9,从 2.12.6 版本开始有个较大的更新,迁移使用 Armeria HTTP 引擎. 从此版本开始,若直接添加依赖的 S ...
- Windows导出文件夹中的文件名列表
在需要导出的目录中,shift+右键,打开cmd或者powershell 运行命令:dir -name >list.txt 刷新文件夹,打开list.txt
- 自己动手实现智能家居之树莓派GPIO简介(Python版)
[前言] 一个热爱技术的人一定向往有一个科技感十足的环境吧,那何不亲自实践一下属于技术人的座右铭:“技术改变世界”. 就让我们一步步动手搭建一个属于自己的“智能家居平台”吧(不要对这个名词抬杠啦,技术 ...
- zookeeper 都有哪些使用场景?
面试题 zookeeper 都有哪些使用场景? 面试官心理分析 现在聊的 topic 是分布式系统,面试官跟你聊完了 dubbo 相关的一些问题之后,已经确认你对分布式服务框架/RPC框架基本都有一些 ...
- php一行代码获取本周一,本周日,上周一,上周日,本月一日,本月最后一日,上月一日,上月最后一日日期
<?php //本周一 echo date('Y-m-d', (time() - ((date('w') == 0 ? 7 : date('w')) - 1) * 24 * 3600)); // ...
- dede tag标签静态化
看回那2个文件夹即可,txt说明书我已经修改过. 下面说一下tag标签静态化之后在内容页.列表页中如何使用. 内容页中沿用之前的方法即可: {dede:tag sort='new' getall='0 ...
- 踩坑踩坑之Flask+ uWSGI + Tensorflow的Web服务部署
一.简介 作为算法开发人员,在算法模块完成后,拟部署Web服务以对外提供服务,从而将算法模型落地应用.本文针对首次基于Flask + uWSGI + Tensorflow + Nginx部署Web服务 ...