zoukankan      html  css  js  c++  java
  • php数组

    1. 什么是数组

    所谓数组,里面存储的是一组数据

    2. PHP数组的分类

    PHP数组分为2类:索引数组,关联数组

    索引数组:所谓索引数组,就是和其他语言一样,下标是从0开始的数字,如下:

    关联数组:键名和值有一定的业务逻辑关系。这个在其他编程语言里面很少见,使用字符串作为数组的下标

    3.PHP数组的声明

    ① 直接赋值声明数组

    语法:$数组名[下标|键名] =

    索引数组的申明:

     

    关联数组的声明

    由于PHP是一门动态语言,和JavaScript一样,申明数组的时候不需要指定数组的大小。数组的大小可以动态的增加。动态语言!=动态类(实例化对象,就是初始化变量)

    ② 使用array()函数来申明数组

    语法:$数组名 = array();

    申明索引数组

    声明关联数组

     

    因为数组也是PHP8大数据类型中的一种,所以可以通过var_dump()来查看数据类型,除此之外,还可以通过print_r()函数也可以查看和打印出数组

    使用print_r():

    数组相关几个小知识点:

    1. 当我们使用第1种方法申明索引数组的时候,如果索引值从0开始依次递增,那么可以不用写索引值

     

    2.可以索引数组和关联数组混搭风格,但是一般没人这么用

     

    3.如果键名重复,后面的会覆盖前面的

     

    ③ 多维数组的申明

    由于PHP数组里面的数据类型可以是任意类型,所以可以在一个数组里面又装入一个数组,形成多维数组。

    如下:

    除了索引,我们也可以创建关联的多维数组

     

    取到多维数组里面的值的方法和其他语言一样的,如下:

     

    打印结果就是”李四”

    课堂练习:用一个3维数组将下面3张表格的信息装进去

    ④ 数组的遍历

    和大多数编程语言一样,我们可以通过for循环来遍历一个数组,如下:

     

    For循环只能遍历索引数组,不能遍历关联数组

    ② 通过foreach来遍历数组(必须掌握)

    foreach(数组名  as  $key => $value

    如下:

     

    效果:

    还有一种写法,就是当我们不想要键名的时候

    foreach(数组名  as  $value

    如下:

    list(),each()

    List():功能主要是将数组里面的所有值依次赋值给list里面的所有变量

    语法:

    List(变量名1,变量名2,变量名3) = 数组名

    如下:

     

    可以通过空的逗号来跳过某些值

     

    List()只能用于索引数组,不能用于关联数组

    如下:

    Each():返回一个数组,这个数组里面有4个键,0,1keyvalue

     0key都是表示键名,1value都是表示值

    Each每使用一次,数组的指针向后移动一位。

    如下:

     

    通过while配合listeach就可以遍历数组

    如下:

    Foreach  each的区别  foreach遍历数组,每使用一次,数组指针仍然为0(初始位置);each遍历数组,每使用一次,数组指针向下移动一位

    ④ 在PHP里面,有一套关于操纵数组指针的函数

    Current():取得当前指针位置的数组值,每个数组都有一个内部的指针指向它当前的单元,初始指向插入到数组单元的第一个单元。

    Key():取得当前指针位置的数组的键名

    Next():将数组指针向后移动一位

    Prev():将数组指针向前移动一位

    End():直接将数组指针移动到最后

    Reset():重置数组指针,移到最开头的地方

     

    1. 预定义数组

    效率比用户自定义的高

    所谓预定义数组,就是php系统给你定义好了的,你直接拿来就可以用的数组。

     

    超全局数组有很多:

    这里只列举一个简单的$GLOBALS

    5.数组相关函数

    ① 数组键和值操纵相关函数

    1. Array_value():返回数组里面所有的元素值。将数组里面的所有值返回为一个新的索引数组

     

    2.Array_keys():返回数组里面所有的元素值。将数组里面的所有值返回为一个新的索引数组

     

    3.In_array():检查数组中是否存在某个值

    该函数接受3个参数 in_array(查找值,数组,是否严格),如果写上1(true),那么就是开启严格模式

     默认状态:非严格模式

    还有一个和in_array()效果差不多的函数array_search(),唯一不同之处就是返回值不同,array_search()是返回元素的键名

     

    Array_key_exists():检查某一个键是否存在于数组里面,如果存在返回值为true,否则返回false

    4.Array_flip():返回一个交换了键和值的新数组。

    5.Array_reverse():将数组里面的元素的顺序进行翻转,原数组不变,返回新的数组

     

    ② 统计相关的数组函数

    Count(数组名);

    Count(数组名,1/true):统计数组里面元素的个数,第二个参数表示计算多维数组的个数

    Array_count_values():用于统计一个数组所有值各自出现的次数

     

    Array_unique():用于删除数组里面的重复值,并返回一个新数组。返回的新数组里面,被保留下来的元素的键名是没有被改变

    ③使用回调函数来处理数组

    回调函数:将一个函数A作为参数传递到另外一个函数B里面,在函数B里面执行函数A

    Array_filter():自己写一个函数来对一个数组进行过滤,返回的新数组里面符合要求的元素的键名会被保留

    语法:array_filter(数组名,”函数名”)

     

    Array_walk():写一个自定义的函数,对数组中的每一个元素都应用这个函数。如果成功返回TRUE,否则返回FALSE

    Array_walk(数组,回调函数,函数的参数)

    Array_map():写一个自定义函数,对数组进行处理,并且可以返回一个新的数组

    Array_map(函数名,数组名1,数组名2,数组名3…)

     

    Array_map对多个数组进行处理

     

    Array_walkarray_map之间的区别:

    Array_walk()函数只是使用传进来的数组的键和值,本身不会对原来的数组有任何影响,哪怕强行改变,也不行

    Array_map()同样也是将数组里面的值应用到函数,但是应用后的节后可以返回给一个新数组

    Array_map()可以处理多个数组,但是Array_walk()只能处理一个数组

     

     

     

    数组排序相关函数

    PHP里面,系统直接给我们提供了一套常用的数组排序函数

    Sort()rsort():这两个算是一组函数,sort就是从小到大,rsort就是从大到小

    Sort()函数示例:

     

    Rsort()函数示例:

     

    Asortarsort:这两个也算是一组函数,和上面一组的功能是一样的,只不过会保留原来的键名

    Assort示例:

    Ksortkrsort:根据键名来排序

     

    按照自然排序法来进行排序:

    所谓自然排序,就是按照人类的思维来排序,例如”12”是大于”2”,如果是字典排序,那么12” 小于“2

    Natsort()

     

    Natcasesort():还是根据自然排序来排序,但是会忽略大小写

    数组的拆分,合并,分解等相关函数

    1. Array_slice():从数组里面截取一部分元素

    语法:array_slice(数组名,开始的键名,截取多少个,[true|false])

    如果最后一个参数设置为TRUE,保留原来的键名

     

    2.Array_splice():从数组里面选择一系列的元素,并将其删除或者用其他的值来代替,返回值是返回被删除掉的元素

    参数一共可以接受4个参数

    Array_combine():合并两个数组,使其成为一个新的数组,其中一个数组为键名,另外一个数组为元素的值

     

    Array_merge():合并数组,如果键名重复,那么后面的会覆盖前面的

     

    Array_merge还有一个用处:可以给索引数组重新排序进行索引

     

    Array_intersect():用于计算数组的交集。

    该函数可以求多个数组

     

    Array_diff():和上面的函数刚好相反,返回第一个数组里面没有在后面数组出现过的元素。

     

    数据结构相关的函数

    Array_push():向数组尾部添加一个或者多个元素,并且返回新数组的长度

    Array_pop():删除数组中最后一个元素,并将数组减1,返回值是弹出的元素

     

    Array_shift()array_unshift()

    这个也是一组函数,刚才的pushpop是在数组尾部做工作,这两个函数是在数组头部做工作

    Array_unshift():向数组头部添加一或者多个元素,并且返回新数组的长度

     

    Array_shift():删除数组中第一个元素,并将数组减1,返回值是弹出的元素

    其他数组相关函数

    1. Array_rand():从数组里面随机挑选出1个或者多个元素并且返回。返回值是一个索引值,根据索引值来找到相应的元素

    返回多个随机值示例:会忘记怎么写

     

    shuffle():将原来数组的顺序打乱,键名也会重新排号

     

    Range(起始值,终值,间隔):创建一个包含指定范围的数组

    Array_sum():计算数组中值的总和

     

    PHP数组其他相关知识

     

    1. 数组运算符号

    PHP里面,数组可以使用+号来进行相加工作

    如果使用+号来合并两个数组,和array_merge不同的地方是,

    array_merge()键名(必须是字符串的键名,如果是数字,则附加在后面,不会产生覆盖)相同,后面的覆盖前面的,

    但是+号刚好相反,如果键名相同,保留最开始的值

     

     

    =====

    PHP的数组也可以通过=====进行相等的判断,如下:

    ==:具有相同的键值对则为TRUE

    ===:具有相同的键值对,并且数据类型相同,顺序也要相同才返回TRUE

     

    如果想要删除数组中某一个元素,直接使用unset()

    需要注意的是,如果删除数组里面的某一个元素,后面的元素的索引值不会发生改变,还是保留之前的索引值。

     

     

  • 相关阅读:
    各种有趣vbs,bat脚本
    weblogic ssrf 漏洞笔记
    jboss反序列化漏洞实战渗透笔记
    脏牛提权
    Bugku-cms1
    通过Tomcat Manager拿shell
    【转】网站渗透入侵常见谷歌黑客语法总结
    【转】AWVS扫描小技巧
    学习笔记
    三栏布局那些事儿
  • 原文地址:https://www.cnblogs.com/chenduzizhong/p/7409988.html
Copyright © 2011-2022 走看看