zoukankan      html  css  js  c++  java
  • 【PHP】最详细PHP从入门到精通(三)——PHP中的数组

     PHP从入门到精通

    之PHP中的数组

       各位开发者朋友大家好,链接上次更新,我们PHP的学习也更深了一层,本次博主给大家带来PHP数组的数组实例详解的相关资料。数组分为数组数值数值,关联数组,多维数组,本文介绍的非常不错具有参考借鉴价值,希望给广大开发者予以参考。感谢大家的持续关注。

       下面博主将详细介绍PHP数组的知识讲解:

      

    PHP数组的分类

    按照下标的不同,PHP数组分为关联数组与索引数组:

    索引数组:下标从0开始,依次增长;
    关联数组: 下标为字符串格式,每个下标字符串与数组的值一一关联对应。(有点像对象的键值对)

    关于关联数组和索引数组:

    1、数组中,可以同时存在索引数组与关联数组;
    array(1,2,3,"one"=>4);

    2、数组中,所有的索引数组,如果不加指定,会去掉关联项,默认增长(即,关联数组不占索引位);
    array(1,2,"one"=>3,4,5); //1,2,4,5的索引-->0/1/2/3

    3、如果,关联数组的key,是纯十进制整数字符串,则会将此数字转为索引数组的索引值;("10.0"/"08"等格式,仍然是关联数组,不转为索引)
    array(1,2,"one"=>3,"9"=>4,"010"=>5);// 1,2,4的索引-->0/1/9

    4、 手动指定关联数组的key、索引数组的下标,如果与前面已有的key或下标重复,则后制定的值会覆盖之前的值;
    array(1,"one"=>2,0=>5,"one"=>6); --> 打印数组:0=>5,"one"=>6

    5、如果手动指定索引数组下标,则后续自增长下标 ,会按照之前下标最大值,依次增长;
    array(1,2,7=>3,4);--> 1,2,3,4的下标-->0/1/7/8

    实例展示:

    复制代码

    $arr1 = array(1,2,3,4,5,6,7); // 索引数组
    var_dump($arr1);

    $arr2 = array("one"=>1,"two"=>2,"three"=>3); // 关联数组
    var_dump($arr2);

    $arr3 = array(1,"one"=>2,3,5=>4,5,6,"10.0"=>7,"08"=>8,"08"=>10,"haha"=>9);
    var_dump($arr3);

    复制代码
    数组的声明方式

    1、直接赋值声明:

    复制代码
     $arr[] = 1;
      $arr[] = 1;
      $arr[8] = 1;
      $arr[] = 1;
      $arr[4] = 1;
      $arr[] = 1;
      var_dump($arr);
    复制代码

    2、[]字面量声明(PHP5.4版本之后能用)

    $arr = [1,2,3,4,"one"=>54,6];
    var_dump($arr);

    3、 Array()声明 木有new关键字

    $arr = array(1,2,3,4,5);
    var_dump($arr);
    数组元素的读取

    PHP中,数组支持[]和{}读取下标。

    复制代码

    $arr = [1,2,3,"one"=>4];
    echo $arr[0];
    echo $arr["one"];
    echo $arr{"one"};
    echo $arr{0};

    复制代码
    多维数组

    数组的一个值,依然是一个数组,我们称这种数组为多维数组;


    多维数组,不要求所有的项都是数组,可以是数组与普通值的混合;
    多维数组,也不要求每个子数组的个数限制,可以是任意的长度;

    使用多维数组一定要注意,数组中分隔用逗号!!
    原则上,多维数组一般不超过3层使用。

    实例展示:

    复制代码

    $h51701 = array(
    "group1"=>array(
    array("name"=>"张三","age"=>14,"sex"=>"男"),
    array("name"=>"张三","age"=>14),
    array("name"=>"张三"),
    "groupName"=>"一组"
    ),
    "group2"=>array(
    array("name"=>"张三","age"=>14,"sex"=>"男"),
    array("name"=>"张三","age"=>14,"sex"=>"男"),
    array("name"=>"张三","age"=>14,"sex"=>"男")
    ),
    "group3"=>array(
    array("name"=>"张三","age"=>14,"sex"=>"男"),
    array("name"=>"张三","age"=>14,"sex"=>"男"),
    array("name"=>"张三","age"=>14,"sex"=>"男")
    )
    );
    var_dump($h51701);

     
    复制代码
    数组的遍历

    1、使用for循环遍历数组
    conut($arr);用于统计数组元素的个数。

    for循环只能用于遍历,纯索引数组!!!!
    如果存在关联数组,count统计时会统计两种数组的总个数,使用for循环遍历混合数组,导致数组越界!!

    复制代码

    $arr = array(1,2,3,5,6,7);
    $num = count($arr);//count最好放到for外面,可以让函数只执行一次
    echo "数组元素的个数{$num}<br/>";
    for($i=0;$i<$num;$i++){
    echo "{$i}==>{$arr[$i]}<br/>";
    }

    复制代码

    2、forEach循环遍历数组
    foreach可以遍历任何类型的数组!!!
    写法如下:

    复制代码
    $arr = array(1,2,3,"one"=>4,5,6,7);
        foreach($arr as $item){
            echo "{$item}<br>";
        }
        foreach($arr as $key => $item){
            echo "{$key}==>{$item}<br>";
        }
    复制代码

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

    list():用于将数组的每一个值,赋值给list函数的每一个参数。(list函数的参数,必须小于等于数组的元素个数);

    list($a,$b,$c)=[1,2,3];-->$a=1; $b=2; $c=3;

    注意:① list()在解析数组时,只解析索引数组;
    ② list可以通过空参数,选择性的解析数组的值;

    list($a,,$b)=[1,2,3];-->$a=1; $b=3;

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

    使用list()/each()/while()配合遍历数组:

    while(list($key,$value) = each($arr)){
             echo "{$key}-->{$value}<br>";     
          }
          reset($arr);

    !!!!数组使用each()遍历完一遍后,指针使用处于最后一位的下一位;即再用each(),始终返回false;
    如果还需使用,需用reset($arr);函数,重置数组指针;

    4、 使用数组指针遍历数组
    ① next:将数组指针,后移一位。并返回后一位的值;没有返回false
    ② prev:将数组指针,前移一位。并返回前一位的值;没有返回false
    ③ end: 将数组指针,移至最后一位,返回最后一位的值;空数组返回false
    ④ reset:将数组指针,恢复到第一位。并返回第一位的值;空数组返回false
    ⑤ key: 返回当前指针所在位的键;超出返回null。
    ⑥ current:返回当前指针所在位的值;超出返回false。

    复制代码
    $arr = [1,2,3,""=>false,"one"=>5];
         while(true){
             echo key($arr);
             echo "--";
             echo current($arr);
            echo "<br>";
            //key===null用于排除数组包含空值,导致next返回值为false的情况;
            if(!next($arr)&&key($arr)===null){
                break;
            }
         }
         reset($arr);
         do{
             echo key($arr);
             echo "--";
             echo current($arr);
            echo "<br>";
         }while(next($arr));
         reset($arr);
    复制代码
    超全局数组

    超全局数组、超全局变量、预定义数组、预定义变量说的都是他。

    PHP给我IM恩提供了一组包含强大功能的超全局数组,可以在任何地方、任何作用域不需要声明,直接使用!!不受任何作用域限制。
    1、 服务器变量: $_SERVER;
    $_SERVER返回包含浏览器头信息、路径、脚本以及服务器系统等各种信息;

    如图所示:


    2、 环境变量:$_ENV;
    $_ENV将系统环境变量,转变为PHP中的数组,就是$_ENV;
    PHP默认是关闭此全局数组的。如果需要使用,需修改php.ini文件中的variables_order="GPSC",改为variables_order="EGPSC"即可使用,否则为空;
    但是,修改后会造成系统性能损失,官方并不推荐使用。
    可以使用getenv()函数取代全局变量,取出每个系统环境变量的值。

    phpinfo():函数,包含PHP的各种信息,其中environment模块就是系统环境变量,可以使用getevn()取出其中的每一个值;

    3、 HTTP GET变量:$_GET;
    $_GET获取前台通过get方式提交的数据;


    4、 HHTP POST变量:$_POST;
    $_POST获取前台通过post方式提交的数据;
    5、 request变量:$_REQUEST;
    默认情况下包含了 $_GET,$_POST 和 $_COOKIE 的数组。 
    由于$_REQUEST同时包含get和post,可能导致get和post的键冲突,并且效率也不高,所有,并不使用request。
    6、 HTTP文件上传变量:$_FILES;
    通过 HTTP POST 方式上传到当前脚本的项目的数组。 (后续细讲)
    7、 HTTP Cookies:$_COOKIE;
    获取当前页面cookie信息;(可以手动setcookie("",""),可赋值);
    8、 Session变量:$_SESSION;
    $_SESSION:取到保存在session中的信息。
    !!!!!!$_SESSION很常用,非常重要!!!!!!!!
    9、 Global变量:$GLOBALS;
    $GLOBALS包含了上述所有全局数组,可以通过$GLOBALS["$_SERVER"]取到$_SERVER;

    还可以通过给$GLOBALS数组追加下标,创建全局变量,可以在函数里函数外随意访问:$GLOBALS["name"]="zhangsan";

  • 相关阅读:
    了解 NoSQL 的必读资料
    关于什么时候用assert(断言)的思考
    这次见到了一些大侠
    NetBeans 时事通讯(刊号 # 87 Jan 12, 2010)
    动态链接库dll,静态链接库lib, 导入库lib
    新女性十得 写得了代码,查得出异常
    记录系统乱谈
    新女性十得 写得了代码,查得出异常
    fullpage.js禁止滚动
    RunningMapReduceExampleTFIDF hadoopclusternet This document describes how to run the TFIDF MapReduce example against ascii books. This project is for those who wants to experiment hadoop as a skunkworks in a small cluster (110 nodes) Google Pro
  • 原文地址:https://www.cnblogs.com/jinguanzhang/p/6988180.html
Copyright © 2011-2022 走看看