一、数组的概述
* 1. 数组的本质:管理和操作一组变量,成批处理
* 2. 数组是复合类型
* 3. 数组中可以存储任意长度的数据,也可以存储任意类型的数据
* 4. 数组就可以完成其它语言数据结构的功能(链表, 队列, 栈, 集合类)
*
* 二、数组的分类
* 数组中存有多个单元,(单元称为元素)
* 每个元素(下标[键]和值)
* 单访问元素时候,都是通过下标(键)来访问元素
*
* 1. 一维数组, 二维数组, 三维数组 。。。 多维数组
* (数组的数组, 就是在数组中存有其它的数组)
* 2. PHP中有两种数组
* 索引数组:就是下标是顺序整数作为索引
* 关联数组:就是下标是字符串作为索引
*
* 下标(整数, 字符串)只有这两种
*
* 三、数组多种声明方式
* 1. 直接为数组元素赋值
  a.如果索引下标不给出,就会从0开始顺序索引
  b.如果给出索引下标,下一个就会是从最大的开始增1
  c.如果后面出现前面的下标,如果是赋值就是为前面的元素重新赋值
  d. 混合声明时,索引和关联不互相影响(不影响索引下标的声明)
* 2. 使用array()函数
  a. 默认是索引数组
  b.如果为关联数组和索引数组指定下标,使用 键=>值
  c.多个成员之前使用“,”分割
 3. 使用其它的函数声明
* file();

四、 数组的遍历
*
 1. 使用for语句循环遍历数组
   a. 其它语言(只有这一种方式)
  b. PHP中这种方式不是我们首选方式
  c. 数组必须是索引数组,而且下标还必须是连续的
  (索引数组下标还可以不连序,数组还有关联数组)

 2. 使用foreach语句循环遍历数组
   foreach(数组变量 as 变量值){
      //循环体
   }
   a. 循环次数由数组的元素个数决定
   b. 每一次循环都会将数组中的元素分别赋值给后面变量
  
  foreach(数组变量 as 下标变量=> 值变量){
  
   }
例子:

 1 <?php
2 $info=array(
3 "user"=>array(
4 //$user[0]
5 array(1, "zansan", 10, "nan"),
6 //$user[1][1]
7 array(2, "lisi", 20, "nv"), //$user[1]
8 //$user[2]
9 array(3, "wangwu", 30, "nan")
10 ),
11 "score"=>array(
12 array(1, 100, 90, 80),
13 array(2, 99, 88, 11),
14 array(3, 10, 50, 88)
15 ),
16 "connect"=>array(
17 array(1, '110', 'aaa@bbb.com'),
18 array(2, '120', 'bbb@ccc.com'),
19 array(3, '119', 'ccc@ddd.com')
20 )
21 );
22
23
24 foreach($info as $tablename=>$table){
25 echo '<table align="center" width="500" border="1">';
26 echo '<caption><h1>'.$tablename.'</h1></caption>';
27 foreach($table as $row){
28 echo '<tr>';
29 foreach($row as $col){
30 echo '<td>'.$col.'</td>';
31 }
32 echo '</tr>';
33 }
34 echo '</table>';
35 }

3. while() list() each() 组合循环遍历数组
*
* each()函数,
  a. 需要一个数组作为参数
  b. 返回来的也是一个数组
  c. 返回来的数组是0, 1, key, value四个下标(固定的)
    0和key下标是当前参数数组元素的鍵
    1和value下标是当前数组元素的值
  d. 默认认当前元素就是第一个元素
  e. 每执行一次后就会将当前元素向后移动
  f. 如果到最后的元素再执行这个函数,则返回false
*
* //Array ( [1] => 1 [value] => 1 [0] => id [key] => id )
*

$user=array("id"=>1, "name"=>"zhangsan", "age"=>10, "sex"=>"nan");

while($arr=each($user)){
//echo $arr[0]."==>".$arr[1]."<br>";
echo $arr["key"]."---->".$arr["value"]."<br>";
}

* list()函数
   a. list()=array(); 需要将一个数组赋值给这个函数
  b. 数组中的元素个数,要和list()函数中的参数个数相同
   c. 数组中的每个元素值会赋值list()函数中的每个参数,list()将每个参数转为变量
  d. list()只能接收索引数组
  e. 按索引的下标的顺序

list($name, $age, $sex)=array("zansan", 10, "nnnnn");

echo $name."<br>";
echo $age."<br>";
echo $sex."<br>"; list($name, , $sex)=array("zansan", 10, "nnnnn"); echo $name."<br>"; echo $sex."<br>"; $ip="192.168.1.128"; list(, , , $d)=explode(".", $ip); echo $d; $user=array("id"=>1, "name"=>"zhangsan", "age"=>10, "sex"=>"nan"); while($arr=each($user)){
//echo $arr[0]."==>".$arr[1]."<br>";
echo $arr["key"]."---->".$arr["value"]."<br>";
} $user=array("id"=>1, "name"=>"zhangsan", "age"=>10, "sex"=>"nan"); while(list($key, $value)=each($user)){
echo $key."==>".$value."<br>";
}

使用数组的内部指针控制函数
  next(数组);
  prev(数组);
  reset(数组)
  end(数组);

  current(数组);

  key(数组);

$user=array("id"=>1, "name"=>"zhangsan", "age"=>10, "sex"=>"nan");

    while(list($key, $value)=each($user)){
echo $key."==>".$value."<br>";
}
reset($user);
while(list($key, $value)=each($user)){
echo $key."==>".$value."<br>";
}
reset($user);
next($user);
next($user);
while(list($key, $value)=each($user)){
echo $key."==>".$value."<br>";
}
reset($user); echo current($user)."===========>".key($user)."<br>";
end($user);
echo current($user)."===========>".key($user)."<br>";
prev($user);
echo current($user)."===========>".key($user)."<br>";

最新文章

  1. day24:面向对象设计与面向对象编程、类和对象
  2. crontab 系列
  3. ibatis插入数据返回ID的方法
  4. HTML新特性之一----canvas
  5. MySQL错误:Can&#39;t connect to MySQL server (10060)
  6. express中ejs模板引擎
  7. .net线程同步
  8. PHP扩展开发之简单类开发
  9. CentOS ips bonding
  10. 201521123004《Java程序设计》第8周学习总结
  11. 用.net中的SqlBulkCopy类批量复制数据 (转载)
  12. Python爬虫入门教程 20-100 慕课网免费课程抓取
  13. MapReduce高级编程2
  14. Java转python第一天
  15. function $(id) {}表示什么函数
  16. Java数据类型与MySql数据类型对照表
  17. kibana加访问控制时报错--Kibana did not load properly.Check the server output for more information.
  18. 远程连接工具SSH和linux的连接
  19. 20145301实验五 Java网络编程及安全
  20. [转]nginx虚拟目录(alias与root的区别)

热门文章

  1. Hibernate在oracle中ID增长的方式(续)
  2. Lzzy高级语言程序设计之while循环
  3. 非对称加密--密钥交换算法DHCoder
  4. Excel老式技术
  5. python之commands和subprocess入门介绍(可执行shell命令的模块)
  6. P1085_不高兴的津津(JAVA语言)
  7. PTA 中序输出叶子结点
  8. PTA 冒泡排序
  9. 仅仅使用Google就完成了人生第一次破解
  10. Dcoker-搭建日志监控系统