php数组操作学习笔记
什么是数组?
数组是一个数据的集合,相当于一个容器,可以将数据按一定的规则存到这个容器中。相当于旅馆,旅馆内有很多房间,而房间按照一定的规则编号。
数组的构成:基本结构形式如下:
$数组名 (键)= 值 数组名:是一个数组区别于另一个数组的方式,就像每个旅馆都有一个名字。
键(key):也成为指针、索引或者标识符。键代表某值在数组中存放的位置,相当于旅馆的门牌号,可以用不同方式命名。通过查询键可以找到相应的值。
值(value):值相当于房间内存放的东西。
赋值创建数组
在php中,创建数组有变量赋值和调用函数两种方法,这里先讲前者。
使用变量赋值方法很简单,直接给一个数组变量赋值即可。
实例:
代码如下 | 复制代码 |
<?php |
三个赋值语句产生的数组内容:
0=>php
1=>html
2=>css
创建数组
除了上面介绍的赋值创建数组,还有调用函数的方法创建数组。
php提供了array函数来穿件一个数组,基本结构形式如下:
array (item1,item2... ,itemn)
/* item表示数组中的元素值。array()函数创建数组时自动给元素值分配标识符,从0依次增加 */
实例:
代码如下 | 复制代码 |
<?php |
数组键名
1、键名分配
在用array()函数创建数组时,键名会自动分配到各个值。另外,我们也可以按自己的需要直接给元素分配键名。
基本结构形式:
array ( key => item )
实例1:
代码如下 | 复制代码 |
<?php $a=array(1 => "you",2 =>"are ", 5 =>"how "); echo $a[5]; echo $a[2]; echo $a[1]; ?> |
2、用字符串作键名
不但可以用整数作为键名,也可以使用字符串作为键名。使用字符串作为键名的数组成为字符串索引(string-indexed)数组。
实例2:
代码如下 | 复制代码 |
<?php $a=array("php"=>"动态网页","html"=>"静态网页","css"=>"网页排版"); echo $a["php"] ."<br>"; echo $a["html"] ."<br>"; echo $a["css"]; ?> |
3、键名的修改
实例3:
代码如下 | 复制代码 |
<?php |
创建多维数组
在php程序编写时,一维数组有时不能满足需求,这时就要用到多维数组。多维数组就是在一维数组的基础上再增加一个或多个细下标,用法与一维数组大致相同,只是多维数据操作更为复杂,不过功能更强大。
以二维数组为例,就像大房子里面套有小房子,表示方法为$a[0][0]。
实例:
代码如下 | 复制代码 |
<?php |
输出数组
输出数组是指将数组的的所有元素数据显示在浏览器上,php怎么输出数组?常用的php输出数组函数有var_dump()和print_r()函数。
1、var_dump函数递归展开数组元素,显示数组各元素的类型、键名和元素值。
实例1:
代码如下 | 复制代码 |
<?php $a=array(0,5,array("php","html","css")); /* 创建一个嵌套的数组 */ var_dump($a); ?> |
2、print_r函数值显示数组元素的键名和元素值。
实例2:
代码如下 | 复制代码 |
|
测试数组
有时候我们不清楚某个变量是不是数组,可以用is_array()函数来测试判断。
基本结构形式:
is_array ( 变 量 )
检测变量是否数组,如果是则返回true,否则返回false。
实例:
代码如下 | 复制代码 |
<?php |
foreach遍历数组
我们在运用数组时,常常要遍历数组并获得各个键或者元素值,php提供了一些专门遍历数组的函数。这里先介绍foreach遍历数组函数的用法。
结构形式:
代码如下 | 复制代码 |
<?php |
通过foreach不仅可以获得元素的值也可以获得键名,结构形式:
foreach ( array_expression as $key => $value ) statement
将以上实例中第7行的代码:
代码如下 | 复制代码 |
foreach( $color as $c) echo $c ."<br>";
|
查找数组元素值
php获取数组键名可以用array_search()来实现,结构形式如下:
array_search( $needle,$haystack )
/* 参数$needle表示要查找的值 */
/* $haystack表示查找对象 */
array_search()函数返回的是键名,而不是布尔值,找不到时返回false。找到的元素如果正好是第一个元素,则返回0。而php会自动转化成false,所以需要使用”===”判断返回值。(“===”判断是否全等,详:php关系运算符)
实例:
代码如下 | 复制代码 |
<?php |
计算数组元素个数
数组也像变量一样可以进行运算,例如需要php统计数组元素个数时,我们可以利用count()函数来计算数组中元素的个数。
结构形式:
代码如下 | 复制代码 |
<?php |
数组排序
php提供了一系列的数组排序函数,我们可以根据需要对数组进行排序。数组的排序主要有三种方式:
按键值排序
即按标识符ASCⅡ码值的大小排列顺序。
ksort(): 按照数组标识符顺序排列
krsort(): 按照数组标识符逆序排
实例1:
代码如下 | 复制代码 |
<?php $languages=array( 'c'=>'php', 'd'=>'asp', 'a'=>'jsp', 'b'=>'java' ); krsort($languages); foreach($languages as $key=>$val){ echo "$key = $val".'<br>'; }; ?> |
按元素值排序
asort(): 按照由小到大的顺序对数组排序;
rsort(): 按照由大到小的顺序对数组逆序排序。
将实例1的8-11行代码改为:
代码如下 | 复制代码 |
asort($languages); print_r($languages); echo "<br>"; rsort($languages); print_r($languages); |
删除原有键名排序
sort(): 按照由小到大的顺序对数组排序;
rsort(): 按照由大到小的顺序对数组逆序排序。
将实例2的8-11行代码改为:
代码如下 | 复制代码 |
sort($languages);
|
数组运算符
合并数组计算实例:
代码如下 | 复制代码 |
<?php $a=array( 'a'=>'php', 'b'=>'html', 'c'=>'css' ); $b=array( 'a'=>'asp', 'b'=>'jsp' ); $c=$a+$b; /* 合并数组 */ var_dump($c); echo "<br>"; $c=$b+$a; /* 调换顺序合并数组 */ var_dump($c); ?> |
数组的比较实例:
代码如下 | 复制代码 |
<?php $a=array('php','asp'); $b=array(1=>'asp',0=>'php'); var_dump($a==$b); var_dump($a===$b); ?> |
例子 | 名称 | 结果 |
---|---|---|
$a + $b | 联合 | $a 和 $b 的联合。 |
$a == $b | 相等 | 如果 $a 和 $b 具有相同的键/值对则为 TRUE。 |
$a === $b | 全等 | 如果 $a 和 $b 具有相同的键/值对并且顺序和类型都相同则为 TRUE。 |
$a != $b | 不等 | 如果 $a 不等于 $b 则为 TRUE。 |
$a <> $b | 不等 | 如果 $a 不等于 $b 则为 TRUE。 |
$a !== $b | 不全等 | 如果 $a 不全等于 $b 则为 TRUE。 |
php字符串查找字符可以通过strstr()、strrchr()函数来实现,两个函数的结构形式如下:
strstr($haystack, $needle)
strrchr($haystack, $needle)
//$haystack表示母字符串,$needle表示要查找的字符
strstr()函数用于查找第一次出现字符的位置,并返回从此位置开始到母字符串结束的部分;
strrchr()函数用于查找最后一次出现字符的位置,并返回从此位置开始到母字符串结束的部分。
实例:
代码如下 | 复制代码 |
<?php $a="p"; $b="echo是php函数,p是html标记"; $str1=strstr($b,$a); if($str1) echo $str1 ."<br>"; else echo "找不到p" ."<br>"; $str2=strrchr($b,$a); if($str2) echo $str2; else echo "找不到p"; ?> |
php字符串出现次数的查找可以通过substr_count()函数来实现,其结构形式:
substr_count($haystack, $needle [,$offset [,$length]])
//$haystack表示母字符串,$needl表示要查找的字符
//$offset表示查找的起点,$length表示查找的长度,均为可选参数
实例:
代码如下 | 复制代码 |
<?php |
php查找字符串位置可以通过strrpos()、strpos()函数来实现。
查找最后一次的位置
用函数strrpos(),结构形式如下:
strrpos($haystack ,$needle [,$offset])
//参数$needle只能是一个字符,而不能是一个字符串。如果提供一个字符串,也只会取字符串中的第一个字符,其它字符无效;
//可选参数$offset设置查找字符串的长度。
实例1:
代码如下 | 复制代码 |
<?php |
查找第一次的位置
用strpos()函数,与函数strrpo()仅差一个字母,功能却相差很大。strpos()函数的$needle参数允许使用字符串,并且查找这个字符串在$haystack中的第一次出现的位置,而不是最后一次。
实例:
代码如下 | 复制代码 |
<?php |
foreach遍历数组
我们在运用数组时,常常要遍历数组并获得各个键或者元素值,php提供了一些专门遍历数组的函数。这里先介绍foreach遍历数组函数的用法。
结构形式:
foreach ( array_expression as $value ) statement
/* array_expression是要遍历的数组
as作用是将数组的值赋给$value
statement是后续语句
*/
实例1:
代码如下 | 复制代码 |
<?php |
通过foreach不仅可以获得元素的值也可以获得键名,结构形式:
foreach ( array_expression as $key => $value ) statement
将以上实例中第7行的代码:
代码如下 | 复制代码 |
改为: foreach( $color as $key => $c) echo $key.$c ."<br>"; |
each遍历数组
遍历数组是php数组操作一个重要的环节,除了前面提到的foreach函数,这里再介绍一个遍历数组的函数-each()。
用each()函数可以输出当前指针位置的键名和对应的元素值。可以使用”0″或”key”来访问键名(标识符),用”1″或”value”访问标识符对应的值。
实例:
代码如下 | 复制代码 |
<?php |
list遍历数组
函数list可以在遍历数组时一次赋给变量,通常和each()函数配合使用。用list()函数使访问each()返回的键和值变得更加简单了。
实例:
代码如下 | 复制代码 |
<?php $date=array(1=>"Monday", 2=>"Tuesday", 3=>"Wednesday"); list($key,$value)=each($date); /* 遍历函数 */ echo "$key $value" ."<br>"; /* 输出第一个数组 */ $next=next($date); /* 指针后移 */ echo "$next"; ?> |
ps:list()函数刚好与array()函数相反,array()将一系列数据构造成数组,而list()则将数组拆分成数据。
for遍历数组
除了php预定义的一些遍历数组函数,我们还可以利用for语句的循环特性将数组遍历输出。下面给出例子:
代码如下 | 复制代码 |
<?php |
在php语言中,基本的流程控制结构有:顺序结构、分支结构、循环结构。
常用的控制语句主要有:
if、if…else判断语句
switch 分支语句
while、do…while循环语句
for 循环语句
break、continue中断语句
php if语句是一个简单的判断语句,即是实现条件判断的功能。当程序执行一段语句时,遇到二岔路口,通过判断语句的值是否满足条件而选择执行相对应的语句。所以if语句是最基本的php条件表达式。
基本结构为:
if(判断语句)
{
执行语句体
}
实例:
代码如下 | 复制代码 |
<?php |
if语句可以选择是否执行语句体,而if…else语句则是二选一,必须在两个语句体中选择一个来执行。可以解释为“若发生了什么事则怎么处理,否则该如何解决”,所以if…else本质上是一种选择性语句。
如果值为非0(即真),则执行语句体1,值为0(即假),则执行语句体2.
if…else语句的基本结构为:
if(判断语句)
{
执行语句体1
}
else
{
执行语句体2
}
实例:
代码如下 | 复制代码 |
<?php |
if…else语句只能实现两路分支,要实现多路分支用多个if…else语句嵌套即可。其结构形式如下:
if(判断语句1){
执行语句体1
}
else if(判断语句2){
执行语句体2
}
else if…
else…
实例:
代码如下 | 复制代码 |
<?php |
在if语句中可以嵌套多个if()语句,以实现多多个参数的判断,一般称为if语句多种嵌套,其基本结构形式如下:
if(判断1)
if(判断2) 语句体1
else 语句体2
else
…
这里应当注意if和else的配对关系,从内层开始,else总是与它上面最近的if配对,在编程时要特别小心。
实例:
代码如下 | 复制代码 |
<?php |
前面介绍了if…else嵌套结构可以实现多分支选择的功能,不过这种方法代码比较冗长。实现多分支选择的功能,php还提供了switch语句。用switch语句事程序变得更加简明了。
基本结构:
switch(表达式){
case 1:
执行语句体1;
break;
case 2:
执行语句体2;
break;
...
default:
执行语句体n;
break;
}
表达式的值首先与case语句逐个匹配,如果匹配得上则执行该语句体,然后跳出循环。如果最终没有case语句匹配,则执行default后面的执行语句。
实例:
代码如下 | 复制代码 |
<?php |
用for语句可以控制多个变量,从而实现多重循环的高级应用。
下面看一个用for语句输出9*9乘法表的程序:
代码如下 | 复制代码 |
<?php |
除了前面提到的while循环语句,php还提供了for循环语句实现同样的功能。而且for语句可以实现更为复杂更多功能的循环,任何while循环都可以用for循环来代替。
基本结构形式:
for(表达式1;表达式2;表达式3){
执行语句体
}
其执行过程如下:
1、先执行表达式1;
2、接着判断表达式2的真假,若为假则跳出for循环执行下一个php语句,若为真则进入for循环执行语句体;
3、然后执行表达式3;
4、返回第2步循环运行;
5、直至循环结束跳出for语句。
流程图:
实例:
代码如下 | 复制代码 |
<?php |
do…while循环语句是while循环的变体,功能类似于while,只是在其执行循环后再检查表达式是否为真,基本结构为:
do{;
语句体
}while(表达式)
do…while循环语句先执行一次语句体,然后判断表达式的条件,如果值为真则返回再循环一次,为假则跳出循环。
实例:
代码如下 | 复制代码 |
<?php
|
while循环语句
while语句是php程序中用来实现循环的语句,其基本结构如下:
while(判断语句){
执行语句体;
}
判断语句一般用关系运算符或者逻辑运算符作为判断条件。
当判断语句为真实则执行语句体,然后再检查表达式的值,如果仍然为真,则执行语句再次被执行。直到判断语句为假时退出循环。
实例:
代码如下 | 复制代码 |
<?php |
while和do…while的区别:
两者的主要区别是do…while语句的第一次循环肯定要执行。
若两者循环体执行语句相同,它们的运行结果一般也相同,但在表达式一开始为假时,两种循环的运行结果就有所不同。
实例:
代码如下 | 复制代码 |
<?php |
php退出循环的方法有break和continu语句,它们的作用都是当判断条件满足时则跳出循环程序。
break语句用法:
当判断条件的值为真时提前结束整个循环,接着执行循环以外的语句。
实例:
代码如下 | 复制代码 |
<?php /* 输出面积在100以内的圆形面积 */ for($r=1;;$r++){ $A=3.14*$r*$r; if($A>50) break; /* 如果没有break则形成死循环 */ echo $A ."<br>"; } ?> |
continue语句用法:
continue语句的作用是结束本次循环而进入下一次循环,并不是退出整个循环程序。
实例:
代码如下 | 复制代码 |
<?php |
break和continue语句的区别:
从上面的例子我们可以看到,break和continue语句在退出循环的作用是有着本质区别的。
continue只是结束本次循环,接着再返回循环体继续执行下次循环;
break则是立即终止整个循环,不再重复执行。
相关文章
- 以前我们开发大型项目时都会用到svn来同步,因为开发产品的人过多,所以我们会利用软件来管理,今天发有一居然可以利用php来管理svn哦,好了看看吧。 代码如下 ...2016-11-25
- 在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
- 这篇文章主要介绍了Python 图片转数组,二进制互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
- 本文章提供在量的数据中级操作实例有如对键名比较计算数组的差集 计算差集 给指定数组中插入一个元素 反转数组 交集赋值新的数组实例。 //定义回调函数 funct...2016-11-25
- 这篇文章主要介绍了C#二维数组基本用法,以实例形式分析了C#中二维数组的定义、初始化、遍历及打印等用法,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
- Array数组在C#中同样是最基本的数据结构,下面为大家C#数组的常用操作方法小结,皆为细小的代码段,欢迎收看收藏...2020-06-25
- 下面一段代码给大家介绍php curl模拟post请求的示例代码,具体代码如下: <?php$uri = "http://www.cnblogs.com/test.php";//这里换成自己的服务器的地址// 参数数组$data = array ( 'name' => 'tanteng'// 'passwor...2015-11-24
- 这篇文章介绍了在C#中对config文件的操作,有需要的朋友可以参考一下...2020-06-25
- 这篇文章主要介绍了python自动化办公操作PPT的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-05
- 下面小编就为大家带来一篇C# 拷贝数组的几种方法(总结)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
- 本文记录的要实现的功能类似于 MySQL 中的 ORDER BY,上个项目中有遇到这样的一个需求。 要求:从两个不同的表中获取各自的4条数据,然后整合(array_merge)成一个数组,再根据数据的创建时间降序排序取前4条。 遇到这个...2014-06-07
- 这篇文章主要介绍了C#实现字符串转换成字节数组的简单实现方法,仅一行代码即可搞定,非常简单实用,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了c#将字节数组转成易读的字符串的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
- 这篇文章主要介绍了C#读取文件所有行到数组的方法,涉及C#针对文件及数组的相关操作技巧,需要的朋友可以参考下...2020-06-25
nodejs文件操作模块FS(File System)常用函数简明总结
件系统操作相关的函数挺多的。首先可以分为两大类。一类是异步+回调的。 一类是同步的。在这里只对异步的进行整理,同步的只需要在函数名称后面加上Sync即可1. 首先是一类最常规的读写函数,函数名称和形式,应该是起源于C...2014-06-07- 如何将下面的二维数组转为一维数组。复制代码 代码如下:$msg = array( array( 'id'=>'45', 'name'=>'jack' ), array( 'id'=>'34', 'name'=>'mary' ), array( 'id...2014-05-31
- 在php中为我们提供了一个函数var_export 他可以直接将php代码入到一个文件中哦。 代码如下 复制代码 var_export($times,true);后面不加tru...2016-11-25
- 这篇文章主要介绍了C#模拟window操作鼠标的方法,可实现模拟鼠标移动到固定位置后点击右键的功能,涉及鼠标常用事件的操作技巧,需要的朋友可以参考下...2020-06-25
- 本文为代码分享,也是在工作中看到一些“大牛”的代码,做做分享。 具体是这样的,如下一个二维数组,是从库中读取出来的。 代码清单: 复制代码 代码如下: $user = array( 0 => array( 'id' => 1, 'name' => '张三', 'ema...2014-06-07
- 我们在php中上传文件就必须使用#_FILE变量了,这个自动全局变量 $_FILES 从 PHP 4.1.0 版本开始被支持。在这之前,从 4.0.0 版本开始,PHP 支持 $HTTP_POST_FILES 数组。这...2016-11-25