热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP学习笔记之数组的定义、遍历

php中数组是一个特殊的数据类型,可以说是对象也可说是存储器了,他里面可以存储php中其它数据类型的内容,如一个数组中可以有字符型,数

php中数组是一个特殊的数据类型,可以说是对象也可说是存储器了, 他里面可以存储php中其它数据类型的内容,如一个数组中可以有字符型,数字型,对象等等,下面我先来学习一下php数组的定义与遍历查找吧。

① 创建数组第一种方法

$arr[0]=123;

$arr[1]=90;

….

概念:

[0] -> 这个我们称为下标,或者称为 关键字

$arr[0] -> 这个称为数组的一个元素.

$arr[0]=123; 123 表示该$arr[0]元素对应的值

$arr –》这个是该数组的名称.

?在php数组中,元素存放的值可以是任意数据数据类型

② 创建数组的第二种方法

基本语法

$数组名=array(值1,值2,.......);

举例说明:

$arr=array(1,90,"helllo",89.5);

③ 第三种方式创建数组(在默认情况下,我们的元素的下标,是从0开始给你编号,但是实际上,也可以自己指定)

基本语法$arr[‘logo’]=”北京”;

$arr[’hsp’]=123

....

或者

$arr=array(”logo”=>”北京”,”hsp”=>123,4=>678);

数组的遍历方法:

注: 如果使用 for while do..while 要确定该数组的下标是从 0开始顺序排放

数组共有多少个元素,可以使用系统函数count,代码如下:

for循环遍历方法

  1. for($i=0;$i<count($arr);$i++){ 
  2. echo &#39;
    &#39;
    .$arr[$i]; 
  3. //while循环遍历方法 
  4. $i=0;//循环控制变量 
  5. while($i<count($colors)){ 
  6. echo "
    "
    .$colors[$i]; 
  7. $i++; 
  8. //do..while 
  9. $i=0;//循环控制变量 
  10. do
  11. echo "
    "
    .$colors[$i]; 
  12. $i++; 
  13. }while($i<count($colors)); 
  14. //foreach 遍历方法 

这个foreach适用范围更广

  1. foreach($arr as $key=>$val){ 
  2. echo $key."=".$val."
    "

php的数组相关的函数

① count 函数

基本用法是

count($数组名); 可以统计该数组共有多少元素.

② is_array

③ print_r 和 var_dump

④ explode 对字符串进行分割

案例:

  1. ?$str="浙江&台州&杭州"
  2. //在实际开发中,涉及到字符串的拆分,可以考虑 
  3. $arr=explode("&",$str); 
  4. print_r($arr); 

数组查找

实例代码如下:

  1. $arr_a = array(0 => "a", 1 => "b", 2 => "c"); 
  2. $key = array_search("a"$arr_a); 
  3. if$key !== FALSE ){ 
  4.     echo "键名为:$key"
  5. else { 
  6.     echo &#39;无匹配结果&#39;
  7. ?> 
  8. //例子输出结果如下: 
  9. //键名为:0 

array_key_exists()函数

如果在一个数组中找到一个指定的键,函数array_key_exists()返回true,否则返回false。其形式如下:

boolean array_key_exists(mixed key,array array);

下面的例子将在数组键中搜索apple,如果找到,将输出这个水果的颜色,代码如下:

  1. $fruit["apple"] = "red"
  2. $fruit["banana"] = "yellow"
  3. $fruit["pear"] = "green"
  4. if(array_key_exists("apple"$fruit)){ 
  5.  printf("apple&#39;s color is %s",$fruit["apple"]); 
  6. //执行这段代码得到的结果: 
  7. //apple&#39;s color is red 

合并数组

array_merge()函数将数组合并到一起,返回一个联合的数组。所得到的数组以第一个输入数组参数开始,按后面数组参数出现的顺序依次迫加。其形式为:

array array_merge (array array1 array2…,arrayN)

这个函数将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。

如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。

如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引,代码如下:

  1. $fruits = array("apple","banana","pear"); 
  2. $numbered = array("1","2","3"); 
  3. $cards = array_merge($fruits$numbered); 
  4. print_r($cards); 
  5. // output 
  6. // Array ( [0] => apple [1] => banana [2] => pear [3] => 1 [4] => 2 [5] => 3 ) 
  7. ?> 

2.追加数组

array_merge_recursive()函数与array_merge()相同,可以将两个或多个数组合并在一起,形成一个联合的数组.两者之间的区别在于,当某个输入数组中的某个键己经存在于结果数组中时该函数会采取不同的处理方式.array_merge()会覆盖前面存在的键/值对,替换为当前输入数组中的键/值对,而array_merge_recursive()将把两个值合并在一起,形成一个新的数组,并以原有的键作为数组名。还有一个数组合并的形式,就是递归追加数组,其形式为:

array array_merge_recursive(array array1,array array2[…,array arrayN])  

程序实例代码如下:

  1. $fruit1 = array("apple" => "red""banana" => "yellow"); 
  2. $fruit2 = array("pear" => "yellow""apple" => "green"); 
  3. $result = array_merge_recursive($fruit1$fruit2); 
  4. print_r($result); 
  5. // output 
  6. // Array ( [apple] => Array ( [0] => red [1] => green ) [banana] => yellow [pear] => yellow ) 
  7. ?> 

现在键 apple 指向一个数组,这个数组由两个颜色值组成的索引数组。

3. 连接数组

array_combine()函数会得到一个新数组,它由一组提交的键和对应的值组成。其形式为:

array array_combine(array keys,array values) 

注意,两个输入数组必须大小相同,不能为空,示例代码如下:

  1. $name = array("apple""banana""orange"); 
  2. $color = array("red""yellow""orange"); 
  3. $fruit = array_combine($name$color); 
  4. print_r($fruit); 
  5. // output 
  6. // Array ( [apple] => red [banana] => yellow [orange] => orange ) 
  7. ?> 
4. 拆分数组 array_slice()

array_slice()函数将返回数组中的一部分,从键offset开始,到offset+length位置结束。其形式:

array array_slice (array array, int offset[,int length])

offset 为正值时,拆分将从距数组开头的offset 位置开始;如果offset 为负值,则拆分从距数组末尾的offset 位置开始。如果省略了可选参数length,则拆分将从offset 开始,一直到数组的最后一个元素,如果给出了length 且为正数,则会在距数组开头的offset+length 位置结束,相反,如果给出了length且为负数,则在距数组开头的count(input_array)-|length|位置结束,考虑一个例子,代码如下:

  1. $fruits = array("Apple""Banana""Orange""Pear""Grape""Lemon""Watermelon"); 
  2. $subset = array_slice($fruits, 3); 
  3. print_r($subset); 
  4. // output 
  5. // Array ( [0] => Pear [1] => Grape [2] => Lemon [3] => Watermelon ) 
  6. ?> 
数组排序(下面方法用于一维数组)

•sort() 函数用于对数组单元从低到高进行排序。

•rsort() 函数用于对数组单元从高到低进行排序。

•asort() 函数用于对数组单元从低到高进行排序并保持索引关系。

•arsort() 函数用于对数组单元从高到低进行排序并保持索引关系。

•ksort() 函数用于对数组单元按照键名从低到高进行排序。

•krsort() 函数用于对数组单元按照键名从高到低进行排序。

多维数组排序,比如有个多为数组,代码如下:

  1. $arr = array
  2. ‘d’ => array(‘id’ => 5, ‘name’ => 1, ‘age’ => 7), 
  3. ‘b’ => array(‘id’ => 2,’name’ => 3,’age’ => 4), 
  4. ‘a’ => array(‘id’ => 8,’name’ => 10,’age’ => 5), 
  5. ‘c’ => array(‘id’ => 1,’name’ => 2,’age’ => 2) 
  6. ); 

需要对二维数组中的 age 项排序。

需要用到PHP的内置函数 array_multisort(),可以看手册。

自定义函数,代码如下:

  1. function multi_array_sort($multi_array,$sort_key,$sort=SORT_ASC){ 
  2. if(is_array($multi_array)){ 
  3. foreach ($multi_array as $row_array){ 
  4. if(is_array($row_array)){ 
  5. $key_array[] = $row_array[$sort_key]; 
  6. }else
  7. return false; 
  8. }else
  9. return false; 
  10. array_multisort($key_array,$sort,$multi_array); 
  11. return $multi_array
  12. //处理 
  13. echo “
    ”; 
  14. print_r(multi_array_sort($arr,’age’));exit
  15. //输出 
  16. Array 
  17. [c] => Array 
  18. [id] => 1 
  19. [name] => 2 
  20. [age] => 2 
  21. [b] => Array 
  22. [id] => 2 
  23. [name] => 3 
  24. [age] => 4 
  25. [a] => Array 
  26. [id] => 8 
  27. [name] => 10 
  28. [age] => 5 
  29. [d] => Array 
  30. [id] => 5 
  31. [name] => 1 
  32. [age] => 7 

推荐阅读
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文探讨了如何通过最小生成树(MST)来计算严格次小生成树。在处理过程中,需特别注意所有边权重相等的情况,以避免错误。我们首先构建最小生成树,然后枚举每条非树边,检查其是否能形成更优的次小生成树。 ... [详细]
  • 非公版RTX 3080显卡的革新与亮点
    本文深入探讨了图形显卡的进化历程,重点介绍了非公版RTX 3080显卡的技术特点和创新设计。 ... [详细]
  • 程序员妻子吐槽:丈夫北漂8年终薪3万,存款情况令人意外
    一位程序员的妻子在网上分享了她丈夫在北京工作八年的经历,月薪仅3万元,存款情况却出乎意料。本文探讨了高学历人才在大城市的职场现状及生活压力。 ... [详细]
  • 本文详细介绍 Go+ 编程语言中的上下文处理机制,涵盖其基本概念、关键方法及应用场景。Go+ 是一门结合了 Go 的高效工程开发特性和 Python 数据科学功能的编程语言。 ... [详细]
  • Valve 发布 Steam Deck 的新版 Windows 驱动程序
    Valve 最新发布了针对 Steam Deck 掌机的 Windows 驱动程序,旨在提升其在 Windows 环境下的兼容性、安全性和性能表现。 ... [详细]
  • 本文详细介绍了 GWT 中 PopupPanel 类的 onKeyDownPreview 方法,提供了多个代码示例及应用场景,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • 本题探讨了一种字符串变换方法,旨在判断两个给定的字符串是否可以通过特定的字母替换和位置交换操作相互转换。核心在于找到这些变换中的不变量,从而确定转换的可能性。 ... [详细]
  • 在 Windows 10 中,F1 至 F12 键默认设置为快捷功能键。本文将介绍几种有效方法来禁用这些快捷键,并恢复其标准功能键的作用。请注意,部分笔记本电脑的快捷键可能无法完全关闭。 ... [详细]
  • 资源推荐 | TensorFlow官方中文教程助力英语非母语者学习
    来源:机器之心。本文详细介绍了TensorFlow官方提供的中文版教程和指南,帮助开发者更好地理解和应用这一强大的开源机器学习平台。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 计算机网络复习:第五章 网络层控制平面
    本文探讨了网络层的控制平面,包括转发和路由选择的基本原理。转发在数据平面上实现,通过配置路由器中的转发表完成;而路由选择则在控制平面上进行,涉及路由器中路由表的配置与更新。此外,文章还介绍了ICMP协议、两种控制平面的实现方法、路由选择算法及其分类等内容。 ... [详细]
author-avatar
ian
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有