PHP数组

一、数组

1. 定义语法 :

     1)使用array关键字:最常用

   $变量 = array(元素1,元素2,元素3…);

     2)使用中括号:

   $变量 = [元素1,元素2,元素3…];

    3)隐形定义数组:给变量加中括号

     $变量[] =值1;

     $变量[下标] = 值;//中括号里内容称为下标key

:下标可以是字母,单词或数字

<?php
// 定义数组:隐型数组
$arr[] = 1; // 默认给数组第0个元素赋值
$arr[10] = 100; // 第10个元素赋值
$arr[] = '1'; // 第11个。默认下标是从当前最大下标
$arr['key'] = 'key'; // 第key个
$arr[1] = 'value' // 第1个,但不会自动调整,还是会处于最后一个位置
var_dump($arr);
// 结果为:array(5) { [0]=> int(1) [10]=> int(100) [11]=> string(1) "1" ["key"]=> string(3) "key" [1]=> string(5) "value" }

2. PHP数组特点

1)可以整数下标或者字符串下标

  • 若数组下标均为整数,则称为索引数组
  • 若数组下标均为字符串,则称为关联数组
  • 混合下标的话称为混合数组

2)数组元素的顺序以放入顺序为准,与下标无关

3)数字下标的增长特性:从0开始自动增长,若中间手动加入较大的下标,则后面则会从当前最大下标+1增长。

4)特殊值下标的自动转换

<?php
// 特殊下标自动转换
$arr1[false] = false;
$arr1[true] = true;
$arr1[NULL] = NULL;
var_dump($arr1); 
// array(3)([0]=>bool(false),[1]=>bool(true) [""]->NULL)

5)PHP数组中类型元素没有限制。

6PHP中数组元素没有长度限制。

3. 多维数组

    二维数组

数组中所有的元素都是一维数组

 

    多维数组

在第二维的数组元素中可以继续是数组,在PHP中没有维度限制(PHP本质并没有二维数组)

    异形数组(不规则数组)

异形数组:数组中的元素不规则,有普通基本变量也有数组。

二、数组遍历

1. foreach遍历

  • foreach遍历原理:

本质是数组的内部有一颗指针,默认是指向数组元素的第一个元素,foreach就是利用指针去获取数据,同时移动指针。

1、 foreach会重置指针:让指针指向第一个元素;

2、 进入foreach循环:通过指针取得当前第一个元素,然后将下标取出放到对应的下标变量$k中(如果存在),将值取出来放到对应的值变量$v中;(指针下移)

3、 进入到循环内部(循环体),开始执行;

4、 重复2和3,直到在2的时候遇到指针取不到内容(指针指向数组最后)

2. for循环遍历数组

条件:

1) 获取数组长度:count(数组)得到数组元素的长度

2) 要求数组元素的下标是规律的数字 

3. While配合each和list遍历数组

   1)Each函数使用:each能够从一个数组中获取当前数组指针所指向的元素的下标和值,拿到之后将数组指针下移,同时将拿到的元素下标和值以一个四个元素的数组返回:

  • 0下标 : 取得元素的下标值
  • 1下标 :取得元素的值
  • key下标 :取得元素的下标值
  • value下标:取得元素的值

    2)List函数使用:list是一种结构,不是一种函数(没有返回值),是list提供一堆变量去从一个数组中取得元素值,然后依次存放到对应的变量当中(批量为变量赋值:值来源于数组):

list必须从索引数组中去获取数据,而且必须从0开始。

  • 正确操作:

 

  • 错误操作:变量多于数组元素,没有指定从0到指定变量的下标的数组元素。因为$second变量对应的下标是1,但是数组中没有下标是1

  3)List与each配合

each一定有两个元素就是0和1下标元素

list(变量1,变量2) = each(数组);

 //是一种赋值运算,但是可以得到false结果(each取不到正确的结果),整个表达式为false

三、数组相关的函数

1. 排序函数:

          对数组元素进行排序,都是按照ASCII码进行比较,可以进行英文比较

  • sort():顺序排序(下标重排)
  • rsort():逆序排序
  • asort():顺序排序(下标保留)
  • arsort():逆序排序

shuffle():随机打乱数组元素,数组下标会重排

2. 指针函数

reset()

重置指针,将数组指针回到首位

end()

重置指针,将数组指针指导最后一个元素

next()

指针下移,取得下一个元素的值

prev()

指针上移,取得上一个元素的值

current()

获取当前指针对应的元素值

key()

获取当前指针对应的下标值

注意事项:next和prev会移动指针,有可能导致指针移动到最前或者最后(离开数组),导致数组不能使用,通过next和prev不能回到真确的指针位置。只能通过end或者reset进行指针重置

3. 其他函数

count()

统计数组中元素的数量

array_push()

往数组中加入一个元素(数组后面)

array_pop()

从数组中取出一个元素(数组后面)

array_shift()

从数组中取出一个元素(数组前面)

array_unshift()

从数组中加入一个元素(数组前面)

array_reverse()

数组元素反过来

in_array()

判断一个元素在数组中是否存在

array_keys()

获取一个数组的所有下标,返回一个索引数组

array_values()

获取一个数组的所有值,返回一个索引数组

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值