美文网首页
php数组 day6 (2019.4.11)

php数组 day6 (2019.4.11)

作者: 满天繁星_28c5 | 来源:发表于2019-04-11 10:50 被阅读0次

    一、数组入门

    可以使用数组保存相关的信息。如:学生的基本信息。

    1.数组概念

    数组是内存中一块连续的空间(堆区)。用来保存不同类型的数组。数组没有长度限制。
    数组由元素(element)组成。元素由键值对(key -value)组成。
    每个元素会有下标,我们成为键(key);
    元素有值(value)

    2.数组分类

    1)索引数组

    indexed 数组的索引值为整数,一般以0开始,通过为止表示数据是用索引数组。

    2)关联数组

    associative 数组以字符串作为索引值。

    3.创建数组的三种方式

    1)直接赋值方式创建

    image.png

    2)array创建

    image.png

    3) 使用[]快捷方式定义数组。(>=PHP5.3.0)

    image.png

    4.数组特点

    1)索引数组

    下标时一个索引,指示元素在数组中的位置,不表示对应值的含义,下标为整形。省略下标时自动从0开始分配,自动增长,部分元素省略下标时,在原来下标的最大值基础上增长。


    image.png

    2)关联数组

    下标为字符串,一般表示元素的意义,定义时下标用””包括


    image.png

    5.多维数组

    当一个数组中的值,还是一个数组时,称为多维数组(几层就是几维)。


    image.png

    用array语法声明一个多维数组。


    image.png

    一、 数组遍历

    1.使用数组的内部指针控制函数遍历数组

    1) 内部指针说明

    由于数组是由多个数据集合而成,当程序需要运算处理的时,当读取某个索引位置的数据内容是,会由数组之中内置的指针,指向目标数据,供程序读取。

    QQ截图20190411102640.jpg

    2) 数组指针控制的相关函数。

    current() 返回数组中当前指针指向的元素值。

    key() 返回数组中当前指针所指向的元素键。


    image.png

    next() 将数组中的指针向前移动一位。
    prev() 将数组中的指针向前倒回一位。
    reset() 将数组中的指针指向第一位。
    end() 将数组中的指针指向最后一位。


    image.png

    3)do....while循环遍历数组

    image.png

    2. 联合使用list( )、each( )和while循环遍历数组

    1)each()

    返回数组中当前指针位置的键值对。并向前移动数组指针。
    键值对被返回成四个单元的数组,键名 0 1 key value
    0 key 包含数组单元的键名
    1 value 包含有数据。
    如果内部指针越过了数组的末端,
    each 返回false;

    image.png

    2)list

    不是函数,是语言结构。
    list()把数组中的值赋给一组变量。
    注意:list()用于数字索引的数组,并且数字索引从0开始。


    image.png

    3)list()、each( )和while循环遍历数组

    image.png
    image.png

    3.使用for语句循环遍历数组

    image.png

    4.使用foreach语句遍历数组

    格式如下
    foreach(被遍历的数组 as [键=>] 值){
    .....
    }
    在循环的时候[当前单元的键会被赋值给键],当前单元的值会被付给 值。并且指针会向前移动一位。


    image.png
    image.png

    注意:foreach 所操作的数组,是指定的数组的拷贝。不是数组本身。

    三、超全局数组:

    1)服务器变量

    _SERVER_SERVER[‘HTTP_REFERER’]; 上一个页面的URL地址
    来源

    image.png
    ["SERVER_NAME"]=>
    string(15) "www.default.com" 服务器主机名
    ["SERVER_ADDR"]=>
    string(9) "127.0.0.1" 服务器ip地址
    ["SERVER_PORT"]=>
    string(2) "80" 服务器端口号
    ["REMOTE_ADDR"]=>
    string(9) "127.0.0.1" 客户端IP
    ["DOCUMENT_ROOT"]=>
    string(23) "C:/wamp/Apache24/htdocs"
    服务器WEB根目录
    ["REQUEST_URI"]=> URL地址。
    string(25) "/quanzhan01/lesson7/3.php"

    2)HTTP GET变量

    3)HTTP POST变量

    四、数组常用函数

    1.max(),min(),count(),

    image.png

    2.range(),array_merge(),array_rand(),shuffle

    1)range(起始值,结束值):

    返回位于起始元素和终止元素之间形成的新数组。


    image.png
    image.png
    image.png

    2)array_merge()数组合并

    image.png

    数组合并下标冲突解决规则:
    字符串下标,后面的元素覆盖前面的元素。
    整数下标,重新建立下标索引


    image.png

    3)array_rand(数组,随机取出元素的个数)

    随机取出数组内元素,返回随机数组的下标
    如果随机取出一个,返回下标。
    如果取出多个,返回下标数组。


    image.png

    4)shuffle(数组):打乱数组

    打乱成功返回true, 打乱失败返回false.


    image.png

    5)例题:生成验证码字符串

    image.png

    3.is_array():判断变量是否是数组类型

    image.png

    4.键值相关函数

    1)array_keys()

    返回数组中元素的键名组成的数组。


    image.png

    2)array_values()

    返回数组中所有元素的值组成的数组。


    image.png

    3)array_combine(键数组,值数组)

    创建一个数组,用键数组的值作为键名。
    值数组的值作为值。


    image.png

    4)in_array(查找的值,数组)

    查找数组中是否包含某个值。


    image.png

    5)array_key_exists(键,数组);

    image.png

    6)array_search()

    在数组中搜索给定的值, 如果成功返回相应的键名,如果找不到,返回false;


    image.png

    7)array_flip() 键值反转

    翻转数组中所有的键以及他们关联的值。


    image.png

    array_flip()函数返回一个反转后的的数组,如果同一个值出现了多次,最后一个键名将作为它的值,其他的键名将消失。(可用于数组去重)。


    image.png

    5.array_push,array_pop,array_shift(),array_unshift()

    array_push(数组,元素)
    在数组的末尾添加元素。
    array_pop(数组)。
    弹出数组末尾的元素。


    image.png

    array_shift();将数组的第一个元素移除。
    array_unshift();在数组的开头插入一个元素。


    image.png
    用数组实现队列(先进先出)
    array_push() 入队
    array_shift() 出队。
    数组实现栈(后进先出,子弹夹)
    array_push() 入栈

    array_pop() 出栈

    6.array_reverse

    以相反的顺序返回数组。


    image.png

    7.数组排序函数sort,rsort,asort,arsort,ksort

    sort()
    对数组进行升序排序,重建数字索引,不保持原来的键值关联关系。


    image.png

    rsort():
    按值进行降序排列,不保持原来的键值关联关系。


    image.png
    asort():
    对数组进行升序排序,保持键值关联。
    image.png

    arsort():
    对数组进行降序排序,保持键值关联。


    image.png
    ksort():
    按键进行升序排列;
    image.png
    krsort():
    按键进行降序排列;
    image.png
    natsort():
    自然排序。
    image.png
    usort():自定义排序

    在第一个参数,小于,等于或者大于第二个参数时,该比较函数必须相应的返回一个,小于,等于,或者大于0的数。


    image.png

    8.数组去重array_unique()

    image.png

    9.数组的案例

    斗地主 随机发牌 自动生成54张牌,随机分配出底牌和每个人的牌。


    image.png
    image.png

    五、数组相关算法

    1.数组排序相关算法

    1)冒泡排序

    要求,将较大的元素放在数组的末尾。
    每趟循环中,通过两两对比,将较大的元素放在右侧。
    原始数组 5 4 3 2
    一趟冒泡 4 3 2 5
    二趟冒泡 3 2 4 5
    三趟冒泡 2 3 4 5


    image.png

    2.数组查找算法

    1)顺序查找

    image.png

    2)二分法查找

    array= [1,3,5,7,9,12,16]; 折半查找。 要求:必须数组是排好序的。 查找速度比较快 先定义两个边界start end =count(arr)-1;
    将中间位置(mid= (start+end)/2)的值。和要查找的值进行比较。
    如果两者相等,则查找成功。
    如果查找的值大于中间的值,则查找的值一定在数组中间的右边。
    只需要把start =mid+1 如果查找的值小于中间的值,则查找的值一定在数组中间的左边。end = mid-1
    循环查找
    运行到最后一共会出现两种结果
    一种:查找到要查的值。
    二种:查不到对应的值。 start >end
    若果说mid 得到的是小数,使用round函数四舍五入。

    image.png
    image.png
    image.png

    相关文章

      网友评论

          本文标题:php数组 day6 (2019.4.11)

          本文链接:https://www.haomeiwen.com/subject/ukiziqtx.html