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

进门:PHP编程“数组”的基础知识

数组可以被编号或者相干联,也就是数组的元素可以分辨根据数字索引或文本化字符串来拜访PHP中,数组可以包含标量(整数,布尔,字符串,浮点数)或复合值(对象甚至其他数组),并且可以包含不同类型的值

关于数组:

PHP中的数组是复杂的,并且比很多其他高级语言中的数组更机动。

数组array是一组有序的变量,其中每个变量被叫做一个元素。

数组可以被编号或者相干联,也就是数组的元素可以分辨根据数字索引或文本化字符串来拜访PHP中,数组可以包含标量(整数,布尔,字符串,浮点数)或复合值(对象甚至其他数组),并且可以包含不同类型的值

1。创立数组

PHP供给创立数组的array()语言结构
$numbers = array(5,4,3,2,1);
$words = array('web','database','application');
echo $numbers[2];
echo $words[0];
---------------------输出成果----------------------------------------
3web
---------------------------------------------------------------------
默认情况下,数组的第一个元素的索引为0。数组中包含的值可以通过应用方括号[]语法来检索和修正
$numbers[5] = 0;
数字化索引的数组可以创立位从任何索引值开端
$numbers = array(1=>'one','two','three','four');
也可以疏松的索引
$numbers = array(1=>'one',3=>'three',5=>'zero');
可以通过给变量赋予一个没有参数的array()来创立空数组。然后可以通过应用方括号[]语法来添加值
$error = array();
$error[] = 'no error!!!';
$error[] = 'second error!!!';
echo $error[0];
echo $error[1];
---------------------输出成果----------------------------------------
no error!!!second error!!!
---------------------------------------------------------------------

2.关联数组

关联数组(associative array)应用字符串索引(或键)来拜访存储在数组中的值
关联索引的数组对于数据库层交互非常有用
$newarray = array('first'=>1,'second'=>2,'third'=>3);
echo $newarray['second'];
$newarray['third']=5;
echo $newarray['third'];
---------------------输出成果----------------------------------------
25
---------------------------------------------------------------------

3.异构数组

PHP数组可以包含不同种类的值

$mixedBag = array('cat',42,8.5,false);
var_dump(mixedBag);

4.***数组

创立包含数组的数组,数组维数没有限制,但是一般很难想象一个多于三维的数组的用法
$planets = array(array('MM',1,2),array('NN',3,4),array('BB',5,6),array('VV',7,8));
print $planets[2][0];
$planets2 = array('MM'=>array('AA'=>1,'SS'=>2),
'NN'=>array('DD'=>3,'FF'=>4),
'BB'=>array('GG'=>6,'HH'=>7,'PP'=>array('haha!!!!')),
'VV'=>array('JJ'=>6,'KK'=>7,'LL'=>array('one','two')));
print $planets2['VV']['LL'][0];
---------------------输出成果----------------------------------------
BBone
---------------------------------------------------------------------

5.应用循环拜访数组

遍历数组的方法有很多(应用while,for循环)或者foreach语句,最轻易的是foreach 语句
$length = array(0,107,202,400,475);
//将厘米转换为寸
for($i=0;$i<5;$i  )
{
echo ($length[$i]/3);
}
$j=0;
while(isset($length[$j]))
{
echo ($length[$j]/3);
$j  ;
}
foreach($length as $cm)
{
echo ($cm/3);
}

---------------------输出成果----------------------------------------
0
35.6666666667
67.3333333333
133.333333333
158.333333333
0
35.6666666667
67.3333333333
133.333333333
158.333333333
0
35.6666666667
67.3333333333
133.333333333
158.333333333

---------------------------------------------------------------------
foreach还可以迭代关联数组的值
$sound = array('cow'=>'moo','dog'=>'woof',
'pig'=>'oink','duck'=>'quack');
foreach ($sound as $animal=>$noice)
{
echo '$animal 得啼声是这样的 $noice $noice......';
}
---------------------输出成果----------------------------------------
cow 的啼声是这样的 moo moo......
dog 的啼声是这样的 woof woof......
pig 的啼声是这样的 oink oink......
duck 的啼声是这样的 quack quack......

---------------------------------------------------------------------
6.应用数组指针

与存储在数组中的键和关联值一起,PHP还拥有一个指向数组当前元素的内部索引,
有几个函数应用并更新该数组索引来供给对数组元素的拜访
$a = array('a','b','c','d','e','f');
echo current($a);
each($a);
key($a);//目前数组的指针,返回其索引
echo current($a);//当前元素的值
each($a);//返回当前元素的值并将内部索引指向下一个元素
each($a);
echo current($a);
next($a);//指向下一个元素
echo current($a);
prev($a);//指向上一个元素
echo current($a);
end($a);//指向最后一个元素
echo current($a);
key($a);
echo current($a);
---------------------输出成果----------------------------------------
abdedff
---------------------------------------------------------------------

7.基础的数组函数

integer count(mixed var)//在数组中返回元素的个数,也可用于任何的变量
number max(array numbers)//返回数组中的最大值
number min(array numbers)//返回数组中的最小值
boolean in_array(mixed needle,array haystack[,bollean strict])//查找数组中的值,第三个参数可选,强迫履行类型检查
mixed array_search(mixed needle,array haystack[,boolean strict])//返回 键 而不是布尔值,
找不到时返回false,找到的元素假如正好是第一个元素,则返回0,而PHP会主动转化为false所以需要应用===判定,如下

$a = array('a','b','c','d','e','f');
$index = array_search('a',$a);
if($index === false)

echo '在数组a中未发明字符'a'';
else
echo 'Index = $index';
---------------------输出成果----------------------------------------
Index = 0
---------------------------------------------------------------------
array array_reverse(array source[,bool preserve_keys])//逆转数组,天生一个新数组,可选参数为true时,保留索引和元素之间的关联
$a = array('a','b','c','d','e','f');
$newa = array_reverse($a);//直接翻转
echo $newa[0];
$newb = array_reverse($a,true);//依旧保留了索引和元素之间的关联
echo $newb[0];
---------------------输出成果----------------------------------------
fa
---------------------------------------------------------------------
sort(array subject[,integer sort_flag])//根据 值 进行升序排列(在原数组中重新排列元素)
rsort(array subject[,integer sort_flag])//根据 值 进行降序排列(在原数组中重新排列元素)
可选参数可以指定为按数字方法SORT_NUMERIC还是字符串方法SORT_STRING或者通常的方法SORT_REGULAR排序
sort()、rsort()可以用于关联数组,但是 键 将丧失
asort(array subject[,integer sort_flag])//根据 值 进行升序排列(在原数组中重新排列元素),保持键值关联
arsort(array subject[,integer sort_flag])//根据 值 进行降序排列(在原数组中重新排列元素),保持键值关联
当asort() arsort()用于非关联数组时,元素按排序后的次序重新排列,但是拜访元素的索引不转变
integer ksort(ayyay subject [,integer sort_flag])//根据 键或索引 进行升序排列
integer krsort(ayyay subject [,integer sort_flag])//根据 键或索引 进行降序排列
usort(array subject, string compare_function)//根据用户定义排序,用户定义自己的排序规矩函数,但函数必需符合
uasort(array subject, string compare_function)//integer my_compare_function(mixed a, mixed b),a>b返回1,a uksort(array subject, string compare_function)//a即是b时返回0
$numbers = array(16,3,2,171,5,24,6,19);
sort($numbers);
foreach($numbers as $n)
echo $n.' ';
$numbers = array(16,3,2,171,5,24,6,19);
rsort($numbers);
foreach($numbers as $n)
echo $n.' ';
$numbers = array(16,3,2,171,5,24,6,19);
sort($numbers,SORT_STRING);
foreach($numbers as $n)
echo $n.' ';
$a = array('o'=>'kk','e'=>'zz','z'=>'hh','a'=>'rr');
asort($a);
foreach ($a as $keyname=>$keyvalue)
echo $keyvalue;
$a = array('o'=>'kk','e'=>'zz','z'=>'hh','a'=>'rr');
ksort($a);
foreach ($a as $keyname=>$keyvalue)
echo $keyvalue;
//基于长度比拟两个字符串
function cmp_length($a,$b)
{
if(strlen($a) return -1;
if(strlen($a) > strlen($b))
return 1;
return 0;
}
$animals = array('cow','ox','monkey','mimi');
usort($animals,'cmp_length');
foreach($animals as $an)
echo $an;
---------------------输出成果----------------------------------------

 

2 3 5 6 16 19 24 171 171 24 19 16 6 5 3 2 16 171 19 2 24 3 5 6 hhkkrrzzrrzzkkhhoxcowmimimonkey
---------------------------------------------------------------------
array_merge($a,$b)//组合数组,个人认为是比拟有趣的函数之一,从两个数组天生一个数组,具有雷同 键 的值会被笼罩
////////////////////////////代码部分////////////////////////////////////////
$a = array('name'=>'zhangsan',10,100);
$b = array('name'=>'lisi',4,6,8);
$c = array_merge($a,$b);
var_dump($c);
//////////////////////////////////////////////////////////////////////////
---------------------输出成果----------------------------------------
array(6) { ['name']=> string(4) 'lisi' [0]=> int(10) [1]=> int(100) [2]=> int(4) [3]=> int(6) [4]=> int(8) }
---------------------------------------------------------------------
array array_combine(array $a,array $b)//a数组的值为新数组的键,b数组的值为新数组的值,数组长度不同时,返回false
////////////////////////////代码部分////////////////////////////////////////
$a = array('name','math','china');
$b = array('zhangsan',4,6);
$c = array_combine($a,$b);
var_dump($c);
//////////////////////////////////////////////////////////////////////////
---------------------输出成果----------------------------------------
array(3) { ['name']=> string(8) 'zhangsan' ['math']=> int(4) ['china']=> int(6) }
---------------------------------------------------------------------

 

 


推荐阅读
  • LeetCode 540:有序数组中的唯一元素
    来源:力扣(LeetCode),链接:https://leetcode-cn.com/problems/single-element-in-a-sorted-array。题目要求在仅包含整数的有序数组中,找到唯一出现一次的元素,并确保算法的时间复杂度为 O(log n) 和空间复杂度为 O(1)。 ... [详细]
  • 如何在Faceu激萌中设置和使用妆容切换特效?
    本文将详细介绍如何在Faceu激萌应用中设置和使用妆容切换特效,帮助用户轻松实现创意拍摄。无论是新手还是有经验的用户,都能从中受益。 ... [详细]
  • 本文介绍如何解决在 IIS 环境下 PHP 页面无法找到的问题。主要步骤包括配置 Internet 信息服务管理器中的 ISAPI 扩展和 Active Server Pages 设置,确保 PHP 脚本能够正常运行。 ... [详细]
  • Python 异步编程:深入理解 asyncio 库(上)
    本文介绍了 Python 3.4 版本引入的标准库 asyncio,该库为异步 IO 提供了强大的支持。我们将探讨为什么需要 asyncio,以及它如何简化并发编程的复杂性,并详细介绍其核心概念和使用方法。 ... [详细]
  • 探讨一个老旧 PHP MySQL 系统中,时间戳字段不定期出现异常值的问题及其可能原因。 ... [详细]
  • 国内BI工具迎战国际巨头Tableau,稳步崛起
    尽管商业智能(BI)工具在中国的普及程度尚不及国际市场,但近年来,随着本土企业的持续创新和市场推广,国内主流BI工具正逐渐崭露头角。面对国际品牌如Tableau的强大竞争,国内BI工具通过不断优化产品和技术,赢得了越来越多用户的认可。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 郑州大学在211高校中的地位与排名解析
    本文将详细解读郑州大学作为一所位于河南省的211和双一流B类高校,在全国211高校中的地位与排名,帮助高三学生更好地了解这所知名学府的实力与发展前景。 ... [详细]
  • 深入理解 Oracle 存储函数:计算员工年收入
    本文介绍如何使用 Oracle 存储函数查询特定员工的年收入。我们将详细解释存储函数的创建过程,并提供完整的代码示例。 ... [详细]
  • 优化ASM字节码操作:简化类转换与移除冗余指令
    本文探讨如何利用ASM框架进行字节码操作,以优化现有类的转换过程,简化复杂的转换逻辑,并移除不必要的加0操作。通过这些技术手段,可以显著提升代码性能和可维护性。 ... [详细]
  • 本文总结了2018年的关键成就,包括职业变动、购车、考取驾照等重要事件,并分享了读书、工作、家庭和朋友方面的感悟。同时,展望2019年,制定了健康、软实力提升和技术学习的具体目标。 ... [详细]
  • 电子元件封装库:三极管、MOS管及部分LDO(含3D模型)
    本资源汇集了常用的插件和贴片三极管、MOS管以及部分LDO的封装,涵盖TO和SOT系列。所有封装均配有高质量的3D模型,共计96种,满足日常设计需求。 ... [详细]
  • 在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ... [详细]
  • CSS 布局:液态三栏混合宽度布局
    本文介绍了如何使用 CSS 实现液态的三栏布局,其中各栏具有不同的宽度设置。通过调整容器和内容区域的属性,可以实现灵活且响应式的网页设计。 ... [详细]
  • 本文详细介绍了如何使用PHP检测AJAX请求,通过分析预定义服务器变量来判断请求是否来自XMLHttpRequest。此方法简单实用,适用于各种Web开发场景。 ... [详细]
author-avatar
淘宝_韩版女装铺
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有