php的数组与数据结构

php编程中30%的地方会用到数组,可见php数组的重要性。

php中的数组
数组概述--- php是弱类型语言,故数组可存放任意多个,任意类型的数据,且可实现堆,栈,队列等数据结构的功能。数组容量可根据元素个数自动调整。

分类
      索引数组---下标是整数,类似大多数语言中的数组。
      关联数组---下标是无序不重复的key,映射到对应的value。

(一)数组的定义
1、直接赋值的方式声明数组
    在变量名后面通过方括号“[]”中使用数字声明索引数组,使用字符串声明关联数组。
    $数组变量名[索引值]=资料内容             //其中索引值(下标)可以是一个字符串或整数
    在声明数组变量时,还可以在下标中使用数字和字符串混合的方式。但对一维数组来说这种方式很少使用
    $contact[0]=1
    $contact[“id”]=1
    $contact[1]="A公司"
    $contact["公司"]="A公司"
    在上段代码中声明了一个数组$contact,其中下标中使用数字和字符串混合的方式。这样既可以使用索引方式访问,也可以使用关联方式访问。
    声明索引数组时,如果索引值是递增的可以不在方括号内指定索引值,默认从0开始依次增加。在php中索引数组的下标值可以是非连续的,只要在初始化时指定非连续的下标值即可。
    $contact[]=1;                            //默认的下标为0
    $contact[14]=“高某”;                 //指定非连续的下标为14
    $contact[]="A公司";                   //紧跟最高的下标值并加1后的下标为15
    $contact[14]=110;                     //下标为14的元素重新赋值
    $contact[]="php";                      //还是紧跟最高的下标值并加1后的下标为16
    print_r($contact);                      //Array ( [0] => 1 [14] => 110 [15] => A公司 [16] => php )
 
2、使用array()语言结构声明数组
    可以用 array() 语言结构来新建一个 array。它接受任意数量用逗号分隔的 键(key) => 值(value) 对。
    $数组变量名=array(key1=>value1,key2=>value2,...,keyN=>valueN,)  // 键(key) 可是是一个 整数或字符串值(value) 可以是任意类型的值
     如果不使用=>指定下标默认为索引数组,索引值默认从0开始依次增加。如果使用array()语言结构声明数组时不希望使用默认的索引值,可以使用=>运算符指定非连续的索引值。代码如下
    $contact=array(1,14=>“高某”,A公司,14=>110,php);
    print_r($contact);                      //Array ( [0] => 1 [14] => 110 [15] => A公司 [16] => php )
    注:应该始终在用字符串表示的数组索引上加上引号。例如用 $foo[‘bar‘] 而不是 $foo[bar]。但这并不意味着总是给键名加上引号。用不着给键名为常量或变量的加上引号,否则会使 PHP 不能解析它们。
(二)遍历数组
1、使用for语句循环遍历数组
    使用for语句遍历数组,要求数组的下标必须是连续的数字索引,而在php中不仅可以指定非连续的数字索引值,还存在以字符串为下标的关联数组,所以在php中很少使用for语句循环遍历数组。

2、使用foreach语句循环遍历数组
    foreach 语法结构提供了遍历数组的简单方式。 foreach 仅能够应用于数组和对象(php5起支持遍历对象),如果尝试应用于其他数据类型的变量,或者未初始化的变量,将导致错误。有两种语法:
     foreach (array_expression as $value){
        第一种
    }
    foreach (array_expression as $key => $value){
        第二种
    }
    更多关于foreach的介绍参加php官方手册

3、联合使用list()、each()和while循环遍历数组
    each()--返回 array 数组中当前指针位置的键/值对并向前移动数组指针。在执行 each() 之后,数组指针将停留在数组中的下一个单元或者当碰到数组结尾时停留在最后一个单元。如果要再用 each 遍历数组,必须使用 reset()。
    list()--把数组中的值赋给一些变量。像 array() 一样,这不是真正的函数,而是语言结构。 list() 用一步操作给一组变量进行赋值。list()仅能用于数字索引的数组并且假定数字索引从0开始。
      补充说明:
        each()每次读取一个元素将之拼装为数组返回,没有元素时返回false。返回的数组键名为0,1,key,value,其中0和key相等,1和value值相等。
        list(),语法古怪,仅用于数字索引数组,并假设索引从0开始。list(,,var)=array;
        while(list(key,value) = each($array)){}

4、使用数组的内部指针控制函数遍历数组
    对于数组指针的控制,php提供了几个内建函数:
    -->current() - 取得目前指针位置的内容资料
    -->key() -  取得目前指针位置的索引值
    -->prev() - 将数组的内部指针倒回一位
    -->next() - 将数组中的内部指针向前移动一位
    -->end() - 将数组的内部指针指向最后一个单元
    -->reset() - 将数组的内部指针指向第一个单元

(三)预定义数组
    从php4.1.0开始,php提供了一套附加的预定义数组,这些数组变量包含了来自web服务器、客户端、运行环境和用户输入的数据。它们在全局范围内自动生效,因此通常被称为自动全局变量或超全局变量。在php中用户不能自定义超全局变量,所以在自定义变量时应避免和预定的全局变量同名。常用的全局数组如下
    -->$GLOBALS — 引用全局作用域中可用的全部变量
    -->$_SERVER — 服务器和执行环境信息
    -->$_ENV — 环境变量
    -->$_GET — HTTP GET 变量
    -->$_POST — HTTP POST 变量
    -->$_REQUEST — HTTP Request 变量,由GET,POST.COOKIE提交至脚本的变量,不值得信任
    -->$_FILES — HTTP 文件上传变量
    -->$_SESSION — Session 变量
    -->$_COOKIE — HTTP Cookies,经由http cookie提交至脚本的变量

 (四)数组的相关处理函数
1、数组的键值操作函数
    -->array_values():返回数组中所有的值
    -->array_keys():返回数组中所有的键名
    -->in_array():检查数组中是否存在某值,即在数组中搜索给定的值。也可用array_search()。
    -->array_key_exits():检查给定的键名或索引是否存在于数组
    -->array_flip():交换数组中的键和值然后返回交换后的数组。如果一个值存在多次则最有一个键名作为它的值覆盖前面的值
    -->array_reverse():将数组中的元素顺序翻转,创建新的数组并返回。也就是将数组元素倒序排列。

2、统计数组元素的个数和唯一性
    -->count():计算数组中的元素数目或对象中的属性个数
    -->array_count_values():统计数组中所有值出现的次数
    -->array_unique():删除数组中重复的值并返回新的数组

3、使用回调函数处理数组的函数
    -->array_filter():用回调函数过滤数组中的元素,返回按用户自定义函数过滤后的新数组
    -->array_walk():对数组中的每个元素应用回调函数处理,成功返回TRUE否则返回FALSE
    -->array_map():将回调函数作用到给定数组的元素上(可处理多个数组),返回用户自定义函数作用后的数组
    -->array_filter():用回调函数过滤数组中的元素,返回按用户自定义函数过滤后的新数组
    -->array_filter():用回调函数过滤数组中的元素,返回按用户自定义函数过滤后的新数组

4、数组的排序函数

5、拆分、合并、分解和结合数组
    -->array_slice():在数组中根据条件取出一段值并返回
    -->array_splice():在数组中根据条件选中一段值删除它们或用其它值替换
    -->array_combine():创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
    -->array_merge():合并一个或多个数组
    -->array_intersect():计算数组的交集
    -->array_diff():计算数组的差集
    -->array_slice():在数组中根据条件取出一段值并返回

6、其它常用函数
    -->array_rand():从数组中随机取出一个或多个元素
    -->shuffle():将数组中元素顺序打乱
    -->array_sum():计算数组中所有值的和
    -->range():建立一个包含指定范围单元的数组

 (五)数组与数据结构
    在强类型编程语言中,有专用的数据结构解决方案。通常是创建一个容器,在这个容器中可以存储任意类型的数据,并且可以根据容器中存储的数据决定容器的容量,打到可以变长的容器结构,比如链表、堆栈和队列等都是数据结构中常用的形式。在PHP中,通常都是使用数组来完成其它语言使用数据结构才能完成的工作。它是若类型语言,在同一个数组中就可以存储多种类型的数据,而且php中的数组没有长度限制,数组存储数据的容量还可以根据里面元素个数的增减自动调整。
1、使用数组实现堆栈
    堆栈是数据结构的一种实现形式,数据存储时采用“先进后出”的数据结构。在php中,将数组当作一个栈使用array_push()和array_pop()两个函数即可完成数据的进栈和出栈操作。
    -->array_push():将一个或多个单元压入数组末尾(入栈),然后返回新组的长度。
    -->array_pop():将数组最有一个单元弹出数组(出栈)
2、使用数组实现队列
     队列是数据结构的一种实现形式,数据存储时采用“先进先出”的数据结构。在php中,将数组当作一个栈使用array_push()和array_shift()两个函数即可完成数据的队列操作。
        -->array_shift():将数组开头的单元移出数组,然后返回被删元素值。
        -->array_shift():在数组开头插入一个或多个单元

时间: 2024-10-10 21:52:19

php的数组与数据结构的相关文章

PHP系列(三)PHP数组与数据结构

  PHP数组与数据结构 数组是把若干变量按有序的形式组织起来的一种形式. 这些数据元素的集 数组分为一维二维三维.索引数组(数组索引是整数)和关联数组 (1)数组的声明 1.一个数组中存的多个内容.数组中的内容叫作"元素" 2.每个元素都是由健和值组成的Key/value $a=array("one"=>"111","two"=>"2222"); 3.下标有二种类型:一种是整数(索引数组).一

PHP08 数组和数据结构

学习要点 数组的分类 数组的定义 数组的遍历 预定义数组 数组的相关处理函数 PHP操作数组需要注意的细节 数组的分类 关于PHP数组 由于PHP是弱类型的编程语言,所以PHP数组中的数组变量可以存储任意多个,任意类型的数据,并且可以实现其他语言强类型数据类型的堆.栈.队列等数据结构. PHP中使用数组的目的就是将多个相互关联的数据组织在一起形成集合,作为一个单元进行操作和处理. 员工信息表: ID 姓名 部门 邮箱 2016001 张三 开发部 [email protected] 201600

常见的关于数组的数据结构

数据结构有什么用? 集合的各种特点,特色.底层都是数据结构支撑实现的. 常见的数据结构 栈 栈:stack,又称堆栈,它是运算受限的线性表,其限制是仅允许在标的一端进行插入和删除操作,不允许在其 他任何位置进行添加.查找.删除等操作.压栈:就是存元素.即,把元素存储到栈的顶端位置,栈中已有元素依次向栈底方向移动一个位置.弹栈:就是取元素.即,把栈的顶端位置元素取出,栈中已有元素依次向栈顶方向移动一个位置. 采用该结构的集合,对元素的存取有如下的特点 先进后出(即,存进去的元素,要在后它后面的元素

php学习笔记数组与数据结构1(日期时间函数及遇到的问题解决)

1在PHP中从最简单的数组构建: 1)常用函数: 生成随机数: 1 echo rand(1,10);//两个参数来确定随机数的范围 2 echo rand(10);10//被当成了他的种子,即不能只给一个参数 2的结果是(缺少一个参数) 2)日期时间函数 <?php var_dump(time());//取当前时间的UNIX时间戳 ?> 这样显示的结果: 例:类似于这样(前提是用var_dump()输出返回的值) 正确的方式是 *年份year(四位)用大写的Y,月份month用小写m,天day

巧用javascript数组实现数据结构-堆栈与队列

简单的利用javascript的数组实现数据结构中的堆栈和队列.Stack.js源码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72

PHP基础-数组与数据结构

强类型语言三个特点:1.数组里边只能存储相同数据类型的数据,2.数组的长度固定,3.在内存里边是连续的 一.数组定义及取值 $arr = array(1,2,3,4,5);//echo $arr[0];  //索引数组 $arr1 = array("one"=>"111","two"=>"222");//echo $arr1["one"];   //关联数组 二.遍历数组 1.for循环遍历,只

PHP入门03 -- 数组与数据结构

一.数组 直接赋值声明数组 1.一个数组中存的是多个内容,数组中的内容叫作“元素”: 2.每个元素都是由  键和值  key/value   key下标 $a = array("one"=>"1111", "two"=>"2222"); 3.就是通过 key  使用 值 4.下标有两种类型: 一种是整数(索引数组).一种是字符串(关联数组) 5.[]来操作下标,也可以使用  { }  惊醒互换,建议使用 [ ]  

【数据结构与算法01】数组

数组是应用最广泛的数据存储结构.它被植入到大部分的编程语言中,由于数组十分易懂,所以在这里就不赘述,主要附上两端代码,一个是普通的数组,另一个是有序数组.有序数组是按关键字升序(或降序)排列的,这种排列使快速查找数据项成为可能,即可以使用二分查找. 普通数组的Java代码: public class GeneralArray { private int[] a; private int size; //数组的大小 private int nElem; //数组中有多少项 public Gener

Java数据结构和算法(二)——数组

上篇博客我们简单介绍了数据结构和算法的概念,对此模糊很正常,后面会慢慢通过具体的实例来介绍.本篇博客我们介绍数据结构的鼻祖——数组,可以说数组几乎能表示一切的数据结构,在每一门编程语言中,数组都是重要的数据结构,当然每种语言对数组的实现和处理也不相同,但是本质是都是用来存放数据的的结构,这里我们以Java语言为例,来详细介绍Java语言中数组的用法. 1.Java数组介绍 在Java中,数组是用来存放同一种数据类型的集合,注意只能存放同一种数据类型. ①.数组的声明 第一种方式: 数据类型 []