php数组,数组相关操作及数组三种遍历方式

数组基础

  • 含义:数组就是系列数据的集合体,他们按设定的顺序排列成一个链的形状”,php中的数组下标可以不是连续的。

  • 定义:(赋值)

    $arr1 = array(2,34,5,6,7); // 最常见的数组形式,下标为默认下标,就是从0开始的整数

    $arr2 = array("a"=>3,"bb"=>11,"cc23"=>6); // 关联数组,下标为字符串,常见

    $arr3 = array(1=>3,10=>11,3=>5,0=>8); // 下标可以人为给定

    $arr4 = array(1=>3,"a1"=>4,5=>5,"mn"=>18,88=>3); // 下标可以数字和字符串混用

    $arr5 = array(5=>3,11,3=>5,"mn"=>18); // 有指定下标,也有自动下标,此时下标为“前面最大数字”下标+1

    $arr6 = array(5=>3,7.7=>11,3=>5,"mn"=>18,2); // 此时下标为5,7,3,"mn",8

    $arr7 = array(5=>4,true=>11,false=>6,"mn"=>45,3); // 此时下标为5,1,0,"mn",6

    $arr8 = array(1=>4,3=>33,true=>11); // 此时下标为1,3对应额值为11,33,下标如果有重复,后面的值会覆盖前面的值

    $arr9 = array(1=>2,-3=>33,11,); // 此时下标为:1,-3,2,注意最后一个逗号可以有

 其他一些形式:

    $arr10[] = 3;
    $arr10[] = 11;
    $arr10[] = 5; // 此时数组下标为0,1,2

    $arr11['a'] = 3;
    $arr11['b'] = 5;
    $arr11['cd'] = 6; // 此时下标为'a','b','cd'


    $arr12[1] = 3; // 下标为1
    $arr12[] = 5; // 下标为2
    $arr11['cd'] = 6; // 下标为'cd'
  • 数组取值:通过数组下标取值,总体上可以将数组的单元的值,看成变量的取值一样

  • 数组分类:

    • 索引数组:通常认为:如果一个数组的下标是严格按照从0开始的连续的整数作为下标,则称其为索引数组
    • 关联数组:通常认为,如果一个数组的下标,下标都是“字符串”并一定程度上表明了该单元的“含义”,则称其为关联数组
    • 混合数组:既有数字下标,也有字符下标
  • 特别注意:php中,数组单元的顺序,是由其“放入”顺序决定,而不是下标

  • 数组的维数(复杂程度)分:

    • 一维数组:

    • 二维数组:

    • 多维数组:

each()函数的使用

  • 作用,先取得一个数组的“当前单元”的下标和值(并放入一个数组中,然后将指针移到下一个单元,可见该函数的返回值为一个数组

list()“函数”的使用

  • 作用:用于取得一个数组中从0开始的数字下标的多个单元的值!

  • 形式:
    list( 1, 变量2, 3...)= 数组;

    如:

    $arr = array(2=>4,1=>5,0=>2);
    list($v1) = $arr; // v1值为2
    list($v1,$v2,$v3) = $arr; // v1,v2,v3值分别为:2,5,4

    数组的指针操作:(数组内部有一种指针)

  • 数组的有关单元的操作,如果没有指定下标,则就是针对该指针指向的单元的操作,则数组,作为一个“总体数据单位“,有如下指针操作函数可以使用:

        $v1 = current($数组); // 获得数组的当前指针指向单元的“值”
        $v2 = key($数组); // 获得数组的当前指针指向单元的“键”(下标)
        $v3 = next($数组); // 先将数组的指针移向下(后)一个单元,然后获得该新指向的单元的“值”
        $v4 = prev($数组); // 先将数组的指针移向上(前)一个单元,然后获得该新指向的单元的“值”
        $v5 = end($数组); // 先将数组的指针移向最后一个单元,然后获得该新指向的单元的“值”
        $v6 = reset($数组); // 先将数组的指针移向第一个单元,然后获得该新指向的单元的“值”

    数组的遍历:

  • foreach遍历数组:

    形式:

    foreach($数组变量名 as 【$key=>】 $value){
        // 循环体,这里可以去“使用”$key和$value
        // $key 和 $value就是该遍历语句一次次取得的数组的每一个单元(项)的下标和对应值
        // 而且,它总是从数组开头往后按顺序取数据
    }
    
  • 使用for和next()遍历数组:

     对php数组,往往不能单纯使用for循环进行遍历,或者说php中使用for循环只能遍历“数组下标从0开始的连续整数”(索引数组)的数组

    如:

    $arr = array(1=>2,"df"=>5,6=>5);
    for($il;i<count($arr)l$i++){
        $key = key($arr);
        $value = next($arr);
        echo "$key => $value";
    }
  • while+each()+list()遍历数组

    形式: 几乎是模式化的语法,如

    while(list($key,$value) = each($arr)){
        // 这里可以处理key和value了
    }

数组遍历的细节探讨

  • 遍历过程中值变量默认的传值方式是值传递,也可以人为指定引用传递(值变量可以引用传递,键变量不能使用引用传递)

    如:

    // 不能再key前加&
    foreach($arr as $key => & $value){
    
    }
  • foreach默认是原数组上进行遍历,即遍历后会改变数组内部指针指向,但如果在遍历过程中对数组进行了某种修改或某种指针性操作,则会复制数组后在复制的数组上继续遍历,(遍历的是副本,改变的是原数组)

  • foreach中如果值变量是引用传递,则无论如何都是在原数组上进行操作(遍历,修改)

数组相关函数

  • 指针操作函数:current(),key(),next(),prev(),end(),reset()
  • 数组排序函数:sort(),asort(),…(参考手册)
  • 数组查找函数:in_array(),array_key_exists,array_search
  • 单元操作函数:array_pop,array_push,…
  • 其他函数:count(),array_reverse,array_merge(),…

数组排序算法

  • 冒泡排序
  • 选择排序
  • 插入排序
  • 快速排序
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值