一.数组的概述
    1.数组的本质:管理和操作一组变量
    2.数组是复合类型
    3.数组中可以存储任意长度的数据,也可以存储任意类型的数据
    4.数组就可以完成其它语言数据结构的功能(链表,队列,栈,集合类)
二.数组的分类
    数组中存有多个单元(单元称为元素)
    每个元素都是由下标(键)和值组成
    单独访问元素时,都是通过下标(键)来访问元素

1.一维数组,二位数组,多维数组(数组的数组)
    2.PHP中有两种数组
        索引数组:就是下标是顺序整数作为索引
        关联数组:就是下标是字符串作为索引

下标(整数或字符串)

三.数组多种声明方式
    1.直接为数组元素赋值
        a.如果索引下标不给出,就会从0开始顺序索引
        b.如果给出索引下标,下一个就会是从最大的增一
        c.如果后面出现前面的下标,如果是赋值就是为前面的元素重新赋值

 <?php
 //索引数组   直接声明
 $user[]=1;
 $user[0]="zhangsan";
 $user[9]=10;
 $user[2]="nan";
 $user[]="aa@bb.com";

 echo '<pre>';
 print_r($user);
 echo '<pre>';
 ?>
 <?php
 //关联数组   直接声明
 $user["id"]=1;
 $user["name"]="zhangsan";
 $user["age"]=10;
 $user["sex"]="nan";
 $user["email"]="aa@bb.com";

 echo '<pre>';
 print_r($user);
 echo '<pre>';
 ?>

2.使用array()函数

    a.默认是索引数组
           b.如果为关联数组和索引数组指定下标,使用键=>值

    c.多个成员之间使用逗号分隔

 <?php
 //使用array声明默认为索引数组
 $user=array(1,"zhangsan",10,"nan","aa@bb.com");

 //使用关联数组
 $user1=array("id"=>2,"name"=>"lisi","age"=>20,"sex"=>"nan","email"=>"aa@bb.com");

 echo '<pre>';
 print_r($user);
 echo '<pre>';

 echo '<pre>';
 print_r($user1);
 echo '<pre>';
 ?>

二维数组

 <?php
 $user=array(
                 array(1,"zhangsan","nan"),
                 array(2,"lisi","nv"),
                 array(3,"wangwu","nan")
     );

 echo $user
 echo '<pre>';
 print_r($user);
 echo '<pre>';

 echo $user[1][1];
 ?>

三维数组

 <?php
 //声明一个三维数组
 $info=array(
             "user"=>array(
                         array(1,"zhangsan","nan"),
                         array(2,"lisi","nv"),
                         array(3,"wangwu","nan")
                 ),
             "score"=>array(
                         array(1,100,90,80),
                         array(2,80,90,70),
                         array(3,60,50,86)
                 ),
             "connect"=>array(
                         array(1,'110',"aaa@qq.com"),
                         array(2,'120',"bbb@qq.com"),
                         array(3,'119',"ccc@qq.com")
                 )
     );

 //输出bbb@qq.com
 echo $info[connect][1][2];

 echo '<pre>';
 print_r($info);
 echo '<pre>';
 ?>

3.使用其他函数声明

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

 <?php
 $user=array(1,"zhangsan",19,"nan");

 for($i=0;$i<count($user);$i++){
     echo "\$user[$i]=".$user[$i]."<br>";
 }
 ?>

2.使用foreach语句循环遍历数组
        foreach(数组变量  as  变量值){
                //循环体
        }

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

foreach 遍历一维数组

 <?php
 $user=array(1,"name"=>"zhangsan","age"=>19,"nan");

     foreach($user as $var){   //$var是自定义变量
         echo $var."<br>";
     }

     foreach($user as $key=>$var){   //$var是自定义变量
         echo $key."---".$var."<br>";
     }
 ?>

foreach遍历三维数组

 <?php
 //声明一个三维数组
 $info=array(
             "user"=>array(
                          array(1,"zhangsan","nan"),
                          array(2,"lisi","nv"),
                          array(3,"wangwu","nan")
                  ),
             "score"=>array(
                         array(1,100,90,80),
                         array(2,80,90,70),
                         array(3,60,50,86)
                 ),
             "connect"=>array(
                         array(1,'110',"aaa@qq.com"),
                         array(2,'120',"bbb@qq.com"),
                         array(3,'119',"ccc@qq.com")
                 )
     );

  //遍历三维数组
 foreach($info as $tableName=>$table){
     echo '<table border="1" width="500" align="center">';
     echo '<caption><h1>'.$tableName.'</h1></caption>';
     foreach($table as $row){
         echo '<tr>';
         foreach($row as $col){
             echo '<td align="center">'.$col.'</td>';
         }
         echo '</tr>';
     }
     echo '</table>';
 }
 ?>

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

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

 $a=each($user);
 print_r($a);   //Array ( [1] => 1 [value] => 1 [0] => id [key] => id ) 

 echo "<br>";
 $b=each($user);
 print_r($b);    //Array ( [1] => zhangsan [value] => zhangsan [0] => name [key] => name )
 ?>

while和each()函数结合使用

 <?php
 $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.按索引下标的顺序

 <?php
 list($name,$age,$sex)=array("zhangsan","20","nan");

 echo $name."<br>";
 echo $age."<br>";
 echo $sex."<br>";

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

 list($key,$value)=each($user);
  echo $key."-->".$value;
 ?>

使用数组的内部指针控制函数
            next(数组);     指针移动到下一个,并返回当前元素的值
            prev(数组);     指针移动到上一个,并返回当前元素的值
            rest(数组);     指针移动到头一个
            end(数组);      指针移动到最后一个
            current(数组);   获取当前元素的值
            key(数组);       获取当前元素的键

while()、list()、each()结合使用

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

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

五.预定义数组
    自动全局变量
    1.包含了来自web服务器,客户端,运行环境和用户输入的数据
    2.这些数组比较特别,全局范围内自动生效,都可以直接使用这些数组。
    3.用户不能自定义这些数组,但这些数据操作方式又和我们自定义的数组操作方式一样
    4.在函数中直接可以使用这些数组

$_GET        经由URL请求提交至脚本的变量
    $_POST       经由HTTP POST方法提交到脚本的变量
    $_REQUEST    经由GET POST COOKIE机制提交到脚本的变量,因此该数组并不值得信任,尽量不要使用。
    $_FILES      经由HTTP POST文件上传而提交至脚本
    $_COOKIE     会话控制
    $_SESSION    会话控制
    $_ENV        执行环境提交脚本的变量
    $_SERVER     变量由web服务器设定的或直接和当前脚本的执行环境相关联
    $GLOBALS     只要是当前脚本有效的变量都在这里,数组的键名为全局变量的名称

PHP中的数组(一)的更多相关文章

  1. 前端开发:Javascript中的数组,常用方法解析

    前端开发:Javascript中的数组,常用方法解析 前言 Array是Javascript构成的一个重要的部分,它可以用来存储字符串.对象.函数.Number,它是非常强大的.因此深入了解Array ...

  2. JavaScript jQuery 中定义数组与操作及jquery数组操作

    首先给大家介绍javascript jquery中定义数组与操作的相关知识,具体内容如下所示: 1.认识数组 数组就是某类数据的集合,数据类型可以是整型.字符串.甚至是对象Javascript不支持多 ...

  3. java 在循环中删除数组元素

    在写代码中经常会遇到需要在数组循环中删除数组元素的情况,但删除会导致数组长度变化. package com.fortunedr.thirdReport; import java.util.ArrayL ...

  4. Objective-C中把数组中字典中的数据转换成URL

    可能上面的标题有些拗口,学过PHP的小伙伴们都知道,PHP中的数组的下标是允许我们自定义的,PHP中的数组确切的说就是键值对.而在OC我们要用字典(Dictionary)来存储,当然了Java用的是M ...

  5. GCC 中零长数组与变长数组

    前两天看程序,发现在某个函数中有下面这段程序: int n; //define a variable n int array[n]; //define an array with length n 在 ...

  6. C++中的数组

    数组名作为参数时,传递的是数组的首地址, 主调函数中实参数组元素个数不应该少于形参数组的元素个数 把数组名作为参数时,一般不指定数组第一维的大小 即使指定,编译时也会被忽略的.

  7. javascript中关于数组的一些鄙视题

    一.判断一个数组中是否有相同的元素 /* * 判断数组中是否有相同的元素的代码 */ // 方案一 function isRepeat1(arrs) { if(arrs.length > 0) ...

  8. Oc中的数组

    ========================== 数组 ========================== 一.认识数组 oc中可以把NSObject对象的子类放到数组这个集合中,但是int.f ...

  9. Javascript中判断数组的正确姿势

    在 Javascript 中,如何判断一个变量是否是数组? 最好的方式是用 ES5 提供的 Array.isArray() 方法(毕竟原生的才是最屌的): var a = [0, 1, 2]; con ...

  10. C#中的数组,多维数组和交错数组

    想研究一些面向对象的东西,也许是代码写得还不够多.感觉还不好,看那些教程,不是嫌太水就是太难看不懂.心情很是落寞 不过再怎样也要坚持每天发一篇博客. 这篇来说一下C#中的数组,多维数组,交错数组的一些 ...

随机推荐

  1. tableview调用reloadData()之后界面不刷新显示

    解决方法: 查看是否有指定tableView的delegate和datasource. self.tableView.delegate = self self.tableView.datasource ...

  2. 修改Window的hosts文件提示“该文件被其他程序占用”解决方案

    1.打开C:\Windows\System32\drivers\etc中的hosts 2.右键——>属性——>安全 3.在修改保存就可以了

  3. 【转】用PowerDesigner对现有的数据库反向工程建立E-R图

    转自:http://www.cnblogs.com/oceanshare/archive/2010/02/10/1667071.html 由于早期的一个项目在数据库设计建立时没有输出为E-R图,偶在对 ...

  4. C语言指针(一)

    一.指针 定义指针变量 指针指向的数据类型 *指针变量名称; 例: int *p; *作用: 1.在定义变量的时候 * 是一个类型说明符,说明定义的这个变量是一个指针变量 2.在不是定义变量的时候 * ...

  5. SqlHelper帮助类

    数据库连接字符串//Data Source=.;Initial Catalog=Test1;User Id=sa;Password=123456; public static class SqlHel ...

  6. iOS App Icon图标 尺寸规范

    Commit to AppStore:1024*1024 //for App IconIcon-60@3x.png:180*180 //iPhone 6 Plus (@3x)Icon-60@2x.pn ...

  7. mac 找文件

    如何找到 etc 方法1: ! D# D! s2 F" f 七度苹果电脑软件1.打开Finder,按快键盘 Command + Shift + G,即可调出 前往文件夹 ,也可以左上角 找到 ...

  8. java正则表达式之java小爬虫

    这个java小爬虫, 功能很简单,只有一个,抓取网上的邮箱.用到了javaI/O,正则表达式. public static void main(String[] args) throws IOExce ...

  9. Windows安装配置php+memcached的方法

    Windows下Memcached的安装配置方法 1.将第一个包解压放某个盘下面,比如在c:\memcached. 2.在终端(也即cmd命令界面)下输入 'c:\memcached\memcache ...

  10. 用ajax向处理页面传送路径问题解决方法

    var pic = document.getElementById("pic");    var ppp = pic.getAttribute("src");/ ...