一、PHP数组简介

1、PHP数组的分类

按照下标的不同分为关联数组和索引数组
①索引数组:下标从0开始依次增长
②关联数组:下标为字符串格式,每个下标字符串与数组的值一一对应,(有点像对象的键值对)

下面详细介绍下索引数组与关联数组

①、数组中可以同时存在索引数组和关联数组;
②、数组中所有的索引数组如果不加指定会去掉关联项,默认增长;关联数组不占索引位
     array(1,2,"one"=>3,4,5); //1/2/4/5的索引-->0,1,2,3
③、如果关联数组的key,是纯十进制整数数字符串,则会将此数字转为索引数组的索引值("10.0"、"08"等格式依然是关联数组,不是数字)
      array(1,2,"one"=>3,"9"=>4) 1,2,4的索引位0/1/9
④、手动指定关联数组的key,索引数组的下标,如果与前面已有的key后下标冲突,则后指定的值会覆盖前面的值
⑤、如果手动指定索引数组下标,则后续自增长下标会按照之前下标最大值,依次增长。

二、PHP数组遍历的四种方法

1、使用常规的for循环遍历

$arr = array(1,2,3,4,5,6);
$num = count($arr);
echo "数组的个数为{$num}<br/>";
for($i=0;$i<$num;$i++){
echo "{$i}==>{$arr[$i]}<br/>";
}

2、使用foreach遍历数组(foreach可以遍历任何类型的数组)

$arr = array(1,2,3,"0ne"=>7,4,5,6);
foreach($arr as $key => $item){
echo "{$key}==>{$item}<br>";
}

3、使用list、each、while()遍历数组

首先我介绍下list和each方法

①list():将数组的每一个值赋值给list函数的每一个参数。(list函数的参数必须小于等于数组的元素个数,)
  注意:list在解析数组时只解析索引数组 list可以通过空参数,选择性的解析数组的值 list($a,,$b) = $arr[1,2,3]; $a=1 $b=3

②each():用于返回数组当前指针所在位的键值对,并将指针后移一位,
  返回值,如果指针有下一位,返回一个数组。包含一个索引数组(0-键,1-值)和一个关联数组(key-键,value-值),
  如果指针没有下一位,返回false

那么如何将三者运用在一块遍历数组呢?

①each($arr)返回数组或false
②把数组或false赋值给$a;
③while判断

while(list($key,$value) = each($arr)){

        echo "{$key}==>{$value}<br>";
}
reset($arr);//重置数组
while(list($key,$value) = each($arr)){ echo "{$key}==>{$value}<br>";
}

注意:数组使用each遍历完之后,指针始终处于最会一位的下一位,即再用each,始终返回false,可以使用reset()函数重置指针

4、使用数组指针遍历

先介绍需要用到的各种方法:

①next:将数组指针后移一位,并返回后一位的值,没有返回false
②prev:将数组指针前移一位,并返回前一位的值,没有返回false
③end: 将数组指针移至最后一位,并返回最后一位的值,空数组返回false
④reset:将数组指针恢复到第一位,并返回第一位的值,空数组返回false
⑤key:返回当前指针所在位的键
⑥current:返回当前指针所在位的值

下面介绍两种方法while和do while方法:

while方法

$arr = array(1,2,3,4,5,6);
while(true){
echo key($arr);
echo "--";
echo current($arr);
echo "<br>";
if(!next($arr)){
break;
}
}

do while方法


$arr = array(1,2,3,4,5,6); 
do{
echo key($arr);
echo "--";
echo current($arr);
echo "<br>";
}while(next($arr));

PHP数组遍历详解的更多相关文章

  1. js数组方法详解

    Array对象的方法-25个 /*js数组方法详解 */ /* * 1 concat() 用于连接多个数组或者值-------------- * 2 copyWithin() 方法用于从数组的指定位置 ...

  2. JavaScript数组方法详解

    JavaScript数组方法详解 JavaScript中数组的方法种类众多,在ES3-ES7不同版本时期都有新方法:并且数组的方法还有原型方法和从object继承的方法,这里我们只介绍数组在每个版本中 ...

  3. OpenCV学习C++接口 Mat像素遍历详解

    OpenCV学习C++接口 Mat像素遍历详解

  4. 最新java数组的详解

    java中HashMap详解 http://alex09.iteye.com/blog/539545 总结: 1.就像引用类型的数组一样,当我们把 Java 对象放入数组之时,并不是真正的把 Java ...

  5. JS数组映射详解

    现在这里占个坑位,免的忘了,需要整理一下最近的内容: 1.数组映射的使用 2.微信分享功能详解 3.jq自己封装 4.HTML的富文本应用

  6. [转载]Splay Tree数组实现+详解

    变量声明:f[i]表示i的父结点,ch[i][0]表示i的左儿子,ch[i][1]表示i的右儿子,key[i]表示i的关键字(即结点i代表的那个数字),cnt[i]表示i结点的关键字出现的次数(相当于 ...

  7. js 类数组arguments详解

    arguments并不是一个真正的数组,而是一个"类似数组(array-like)"的对象: 就像下面的这段输出,就是典型的类数组对象: [, , callee: ƒ, Symbo ...

  8. JavaScript中数组对象详解

    Array对象即数组对象用于在单个变量中存储多个值,JS的数组是弱类型的,所以允许数组中含有不同类型的元素,数组元素甚至可以是对象或者其他数组. 创建数组的语法 1.Array构造器 1.var li ...

  9. JavaScript Array数组方法详解

    Array类型是ECMAScript中最常用的引用类型.ECMAScript中的数据与其它大多数语言中的数组有着相当大的区别.虽然ECMAScript中的数据与其它语言中的数组一样都是数据的有序列表, ...

随机推荐

  1. God web

    http://my.csdn.net/yerenyuan_pku http://evilcos.me/?p=336 https://www.zhihu.com/question/21606800 st ...

  2. python-list.sort && lambda

    dictionary是一个有元组组成的list,变量名有点歧义,这里是想表达 由元组组成的list哈. 之所以用dictionary是因为模拟的将字典转换成list. 将list进行排序,而根据lam ...

  3. python学习之sys模块

    查看python的版本 >>> sys.version_info[] sys.argv 列表对象,传入模块参数的都会放入列表中. #-*- coding: utf-8 -*- # i ...

  4. 前端_basic

    web: 分三部分:1.HTML:2.CSS:3.JavaScript. 1.HTML:用来构建网页的结构和内容: 2.CSS:用来给网页化妆,美化网页: 3.JavaScript:用来让网页呈现动态 ...

  5. Ubuntu安装新版本nodejs的5种姿势

    引言: 写这篇文章之前,关于ubuntu14.04(Trusty)默认安装的NodeJS版本是0.10.25百思不解(什么鬼,哪一年的NodeJS) 写这篇文章之时,NodeJS的LTS版本号都已经1 ...

  6. C语言 百炼成钢27

    /* 题目63:编写C++程序完成以下功能: (1)声明一个纯虚函数类Shape(形状),其中包含来计算面积.计算周长的方法: (2)从Shape派生两个类矩形和圆形: (3)从矩形派生正方形: (4 ...

  7. 利用JMeter的beanshell进行接口的加密处理

    最近项目中在做http协议的接口测试,其中接口请求报文数据有个字段值需要用到加密后的签名,即出于网络传输过程中,对数据安全的考虑,要对请求的数据进行特定的处理(加密),再进行请求. 刚开始由于项目赶进 ...

  8. nodejs之路探寻

    在webpack配置中经常会发现 const path = require('path') 这是加载nodejs路径处理API,这个API主要包含下面三个方法 path.dirname(filepat ...

  9. java-通过 HashMap、HashSet 的源码分析其 Hash 存储机制

    通过 HashMap.HashSet 的源码分析其 Hash 存储机制 集合和引用 就像引用类型的数组一样,当我们把 Java 对象放入数组之时,并非真正的把 Java 对象放入数组中.仅仅是把对象的 ...

  10. 68、 FragmentPagerAdapter+ViewPager实现Tab

    <LinearLayout *** <android.support.v4.view.ViewPager android:id="@+id/id_viewpager" ...