PHP的数组

==========================
    PHP的数组
==========================
 
一、 基本概念
-------------------------------------
 1. 数组的概念:
 
 *2. 数组的分类:根据数组的下标(索引值)类型不同分为:
        索引式数组:数组下标都是整数的, 默认数组的索引下标是从0开始
        关联式数组:数组下标是以字串表示的 (在其他强类型语言中有的称这个叫集合)
 
 3.php中数组的定义:
      *(1). 直接赋值: $数组名[下标]="值";
            echo "<p>==============索引式数组=================<p/>";
            $a[]=10;
            $a[]=20;
            $a[]=30;
            $a[100]="cc";
            $a[]="cc";
            $a[]="bb";
 
            echo "<p>==============关联式数组==================<p/>";
            $p["name"]="张三";
            $p["sex"]="男";
            $p["age"]=20;
            $p["name"]="李四"; //修改
 
      *(2). 使用array语言结构来定义。
            $a = array(10,20,30,40);   //使用array函数定义一个数组(未指定下标)
            $b = array("aa","bb","cc");//使用array函数定义一个数组(未指定下标)
            $c = array(1=>10,2=>20,6=>80);    //使用array函数,定义一个指定下标的数组
 
            $stu = array("name"=>"张三","age"=>20); //使用array函数,定义一个指定关联下标的数组
 
            $stu = array("name"=>"张三","age"=>20,3=>"qq","pp",'w',18=>'dd','oo'); 
 
 
            $p = array("name"=>"张三","age"=>20,"aa","bb"); //这时数组aa和bb的下标为0,1
 
      (3)、 使用快捷方式定义数组。(>=PHP5.3.0)
            $a = [10,20,30];
            $stu = ["name"=>"张三","age"=>20];
 
 
    4. 多维数组:当一个数组中的元素单元还是一个数组时,称为多维数组。(几层就是几维)
        如:echo $a[10]; //一维数组
            echo $a[1][2]; //二维数组
 
            $a = array(10,20,40,50); //一维数组
 
            $b = array( array(10,20),array(30,40)...); //二维数组
 
        如二维数组的赋值:
            直接赋值:
            $a[][]=10; echo $a[0][0];
            $b[][]=1;  echo $b[0][0];
            $b[][]=2;  echo $b[1][0];
            $b[][]=3;
            $c[1][]=4;  echo $c[1][0];
            $c[1][]=5;  echo $c[1][1];
 
 
 
二、数组的遍历(迭代)输出(4种)
-------------------------------------------
    1.使用循环结构:for/while/do...while
        使用到一个函数:count()--获取数组的长度(元素的个数)
        示例:
            $a=array(10,20,30,40,50,60);
            $ll=count($a);
            for($i=0;$i<$ll;$i++){
                echo $a[$i]." ";
            }
        注意:使用for循环只适合输出索引式数组,并且数组下标是从0开始连续的整数。
        但是可以使用array_values()函数来弥补数组下标不足的地方。
        array_keys()
        示例:
            echo "<br/>";
            //输出非规则的数组
            $a=array(2=>10,3=>40,6=>80,4=>30,"name"=>"张三");
            //获取数组中的所有值,并以索引式数组返回
            $list = array_values($a);
            //使用for循环遍历
            for($i=0;$i<count($list);$i++){
                echo $list[$i]." ";
            }
 
    *2. 使用foreach遍历数组
            格式:foreach(被遍历的数组 as [键=>]值){
                        ....
                  }
 
            示例://关联式数组的输出
                $stu = array("name"=>"zhangsan","age"=>20,"sex"=>"man");
                foreach($stu as $k=>$v){
                    echo "{$k}=>{$v}<br/>";
                }
 
    3.  联合while each reset list遍历数组(半自动方式)
 
        each()--获取当前数组指针位置的键和值,并以关联和索引两种方式返回,并且指针向下移动一位。
        reset()--将数组指针移至首位。
        list()--直接解析赋过来的数组中的索引下标对应的值,解析是从0开始
            list($v1,$v2)=array("key"="name",0=>"name","value"="zhangsan",1=>"zhangsan");
            echo $v1.":".$v2; //name:zhangsan
 
        示例:
            //使用while、each、reset、list解析遍历的结果
            $stu = array("name"=>"zhangsan","age"=>20,"sex"=>"man");
            reset($stu);
            while(list($k,$v)=each($stu)){
                echo "{$k}=>{$v}<br/>"; 
            }
 
 
    4. 使用下面的函数来遍历数组(纯手工遍历数组)
        reset()-- 将数组的内部指针指向第一个单元
        end() — 将数组的内部指针指向最后一个单元 
        next() — 将数组中的内部指针向前移动一位 
        prev() — 将数组的内部指针倒回一位
        current() — 返回数组中的当前单元
        key() — 从关联数组中取得键名
 
        do....while循环
 
        示例:
            $a = array(10,20,30,40,50,60);
            reset($a);//将数组指针移至首位
            do{
                echo key($a)."=>".current($a)."<br/>"; //获取键和值
            }while(next($a));
 
 
            //倒着输出
 
 
三、超全局数组:
---------------------------------------------------
    $GLOBALS 包含以下所有信息
    *$_SERVER 服务器和执行环境信息
    *$_GET  通过 URL 参数传递给当前脚本的变量的数组。 
    *$_POST 通过 HTTP POST 方法传递给当前脚本的变量的数组。
    *$_FILES 保存文件上传信息(在文件处理章节中细讲)
    (cookie和session在会话跟踪章节中细讲)
    *$_COOKIE 通过 HTTP Cookies 方式传递给当前脚本的变量的数组(用于储存论坛、文库、博客等登陆信息)
    *$_SESSION 当前脚本可用 SESSION 变量的数组。(用于网站购物车等的信息存储)
    *$_REQUEST 包含get、post和cookie
    $_ENV 存储的是系统环境变量信息
 
     *$_SERVER["HTTP_REFERER"]--上一页面的url地址
     $_SERVER["SERVER_NAME"]--服务器的主机名
     *$_SERVER["SERVER_ADDR"]--服务器端的IP地址
     $_SERVER["SERVER_PORT"]--服务器端的端口
     *$_SERVER["REMOTE_ADDR"]--客户端的IP
     $_SERVER["DOCUMENT_ROOT"]--服务器的web目录路径
     *$_SERVER["REQUEST_URI"];//--URL地址
     echo $_GET["name"];
     echo $_REQUEST["name"]; //获取信息比上面get的会慢一些
 
 
     form表单的get提交方式:url地址可见,相对不安全,长度受限,可以做为标签连接使用。
     form表单的post提交方式:url地址不可见,相对安全,长度不受限。
 
 
 四、 数组的相关函数
 ------------------------------
   1. 数组的键和值的操作函数
        *array_values — 返回数组中所有的值
        array_keys — 返回数组中所有的键名
        array_flip — 交换数组中的键和值
        *in_array — 检查数组中是否存在某个值
        array_reverse — 返回一个单元顺序相反的数组
        *is_array() --判断是否是数组
 
    2. 数组的统计相关函数
        *count -- 计算数组中的单元数目或对象中的属性个数
        array_count_values -- 统计数组中所有的值出现的次数
        *array_unique -- 移除数组中重复的值
 
    3. 带回调函数的
        array_filter --  用回调函数过滤数组中的单元     
        array_walk -- 对数组中的每个成员应用用户函数
        array_map --  将回调函数作用到给定数组的单元上 
 
    4. 数组的排序
        *sort -- 对数组排序(升序)
        rsort -- 对数组逆向排序(降序)
        asort -- 对数组进行排序并保持索引关系(关联数组排序)
        arsort --  对数组进行逆向排序并保持索引关系 
        usort --  使用用户自定义的比较函数对数组中的值进行排序
        uasort --  使用用户自定义的比较函数对数组中的值进行排序并保持索引关联
        ksort -- 对数组按照键名排序
        krsort -- 对数组按照键名逆向排序
        uksort --  使用用户自定义的比较函数对数组中的键名进行排序
        *natsort --  用“自然排序”算法对数组排序
        natcasesort --  用“自然排序”算法对数组进行不区分大小写字母的排序
 
    5.拆分、合并、分解与结合数组
        array_slice -- 从数组中取出一段
        array_splice --  把数组中的一部分去掉并用其它值取代 
        array_combine --  创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值 
        *array_merge -- 合并一个或多个数组
        *array_intersect -- 计算数组的交集
        array_diff -- 计算数组的差集
 
    6.数组与数据结构
        *array_pop -- 将数组最后一个单元弹出(出栈)
        array_push -- 将一个或多个单元压入数组的末尾(入栈)
        array_shift -- 将数组开头的单元移出数组
        array_unshift -- 在数组开头插入一个或多个单元
 
    7.其他有用的数组处理函数
        array_rand  --从数组中随机取出一个或多个单元 
        shuffle -- 将数组打乱 
        range -- 建立一个包含指定范围单元的数组

转载于:https://www.cnblogs.com/bruisebd/p/5386319.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值